All of lore.kernel.org
 help / color / mirror / Atom feed
* help
@ 2019-02-06  5:26 John Klug
  0 siblings, 0 replies; 278+ messages in thread
From: John Klug @ 2019-02-06  5:26 UTC (permalink / raw)
  To: linux-media

help

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2023-06-12  9:33 help stanzgy
@ 2023-06-12  9:36 ` stanzgy
  0 siblings, 0 replies; 278+ messages in thread
From: stanzgy @ 2023-06-12  9:36 UTC (permalink / raw)
  To: netfilter-devel

help

On Mon, Jun 12, 2023 at 5:33 PM stanzgy <stanzgy@gmail.com> wrote:
>
> --
> Best regards



-- 
Best regards

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2023-06-12  9:33 stanzgy
  2023-06-12  9:36 ` help stanzgy
  0 siblings, 1 reply; 278+ messages in thread
From: stanzgy @ 2023-06-12  9:33 UTC (permalink / raw)
  To: netfilter-devel

-- 
Best regards

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2022-11-29 21:01 hinxx
  0 siblings, 0 replies; 278+ messages in thread
From: hinxx @ 2022-11-29 21:01 UTC (permalink / raw)
  To: stable

help


Sent with Proton Mail secure email.

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2022-11-15  4:35 Help jovial umwari
@ 2022-11-15 13:59 ` Julia Lawall
  0 siblings, 0 replies; 278+ messages in thread
From: Julia Lawall @ 2022-11-15 13:59 UTC (permalink / raw)
  To: jovial umwari
  Cc: Alison Schofield, Outreachy Linux, kumarpraveen, Saurabh Sengar



On Tue, 15 Nov 2022, jovial umwari wrote:

> Greetings to everyone
> Hope you are doing well
> i  am Umwari jovial  an outreach applicant
> in these past days i faced  a challenge  when i was configuring the kernel
> i went ahead and changed the kernel version in .config  then i had to
> do make j4(i have 4 cores) and all was well but when i restarted the
> computer  i was not able to access my normal  operating system and i
> had to use  the recovery mode to access it  up to now  i am not able
> Note: i am using Ubuntu ,
> Running  Linux natively on my own machine.
> other setups are working well
>
> Seeking for help on to resolve the issue any advice or help i will appreciate

Hello,

There is not really enough information for me to understand the problem.
But I have noticed that sometimes there is an error or more probably a
warning in the kernel compilation process, and then it will not reboot.
Perhaps that is your problem.

julia

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
@ 2022-11-15  4:35 jovial umwari
  2022-11-15 13:59 ` Help Julia Lawall
  0 siblings, 1 reply; 278+ messages in thread
From: jovial umwari @ 2022-11-15  4:35 UTC (permalink / raw)
  To: Alison Schofield, Outreachy Linux, kumarpraveen, Saurabh Sengar

Greetings to everyone
Hope you are doing well
i  am Umwari jovial  an outreach applicant
in these past days i faced  a challenge  when i was configuring the kernel
i went ahead and changed the kernel version in .config  then i had to
do make j4(i have 4 cores) and all was well but when i restarted the
computer  i was not able to access my normal  operating system and i
had to use  the recovery mode to access it  up to now  i am not able
Note: i am using Ubuntu ,
Running  Linux natively on my own machine.
other setups are working well

Seeking for help on to resolve the issue any advice or help i will appreciate
Thank you

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2022-06-16  5:26 Andreas Radke
  0 siblings, 0 replies; 278+ messages in thread
From: Andreas Radke @ 2022-06-16  5:26 UTC (permalink / raw)
  To: ell



^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2022-06-03 23:04 Thomas Green
  0 siblings, 0 replies; 278+ messages in thread
From: Thomas Green @ 2022-06-03 23:04 UTC (permalink / raw)
  To: linux-bluetooth

A couple of weeks ago, I posted this question, and haven't heard anything back.  Is there someone out there that can help me?


Hi.... I have problem when removing a device from use.  I have two identical devices connected to my host.  For each of them I disconnect the device, then remove it.  Sometimes it works just fine, and sometimes it seems something doesn't finish, and a timeout error is returned.  When it doesn't finish, I can't do anything any more.  A scan doesn't do anything, and if I try to turn off the scan I get an InProgress error.  Here is a log produced by running 

bluetoothd -experimanal -debug -n

bluetoothd[3432]: ../bluez-5.50/src/device.c:btd_device_set_temporary() temporary 1
bluetoothd[3432]: ../bluez-5.50/src/service.c:change_state() 0x55fffe0bead0: device C4:33:13:80:17:20 profile gap-profile state changed: connected -> disconnecting (0)
bluetoothd[3432]: ../bluez-5.50/src/service.c:change_state() 0x55fffe0bead0: device C4:33:13:80:17:20 profile gap-profile state changed: disconnecting -> disconnected (0)
bluetoothd[3432]: ../bluez-5.50/src/adapter.c:dev_disconnected() Device C4:33:13:80:17:20 disconnected, reason 2
bluetoothd[3432]: ../bluez-5.50/src/adapter.c:adapter_remove_connection() 
bluetoothd[3432]: ../bluez-5.50/src/adapter.c:adapter_remove_connection() Removing temporary device /org/bluez/hci0/dev_C4_33_13_80_17_20
bluetoothd[3432]: ../bluez-5.50/src/device.c:device_remove() Removing device /org/bluez/hci0/dev_C4_33_13_80_17_20
bluetoothd[3432]: ../bluez-5.50/src/service.c:change_state() 0x55fffe0bead0: device C4:33:13:80:17:20 profile gap-profile state changed: disconnected -> unavailable (0)
bluetoothd[3432]: ../bluez-5.50/profiles/gap/gas.c:gap_remove() GAP profile remove (C4:33:13:80:17:20)
bluetoothd[3432]: ../bluez-5.50/src/service.c:btd_service_unref() 0x55fffe0bead0: ref=0
bluetoothd[3432]: ../bluez-5.50/src/service.c:change_state() 0x55fffe0b4dc0: device C4:33:13:80:17:20 profile :1.70/ntouch/app/6e400001-b5a3-f393-e0a9-e50e24dcca9e state changed: connecting -> disconnected (-103)
bluetoothd[3432]: ../bluez-5.50/src/device.c:device_profile_connected() :1.70/ntouch/app/6e400001-b5a3-f393-e0a9-e50e24dcca9e Software caused connection abort (103)
bluetoothd[3432]: ../bluez-5.50/src/service.c:change_state() 0x55fffe0b4dc0: device C4:33:13:80:17:20 profile :1.70/ntouch/app/6e400001-b5a3-f393-e0a9-e50e24dcca9e state changed: disconnected -> unavailable (0)
bluetoothd[3432]: ../bluez-5.50/src/gatt-database.c:profile_device_remove() :1.70/ntouch/app/6e400001-b5a3-f393-e0a9-e50e24dcca9e removed
bluetoothd[3432]: ../bluez-5.50/src/service.c:btd_service_unref() 0x55fffe0b4dc0: ref=0
bluetoothd[3432]: ../bluez-5.50/src/device.c:btd_device_unref() Freeing device /org/bluez/hci0/dev_C4_33_13_80_17_20
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:unregister_service() Removing GATT service: /org/bluez/hci0/dev_C4_33_13_80_17_20/service000a
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:unregister_service() Removing GATT service: /org/bluez/hci0/dev_C4_33_13_80_17_20/service000b
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:unregister_characteristic() Removing GATT characteristic: /org/bluez/hci0/dev_C4_33_13_80_17_20/service000b/char000c
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:unregister_descriptor() Removing GATT descriptor: /org/bluez/hci0/dev_C4_33_13_80_17_20/service000b/char000c/desc000e
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:unregister_service() Removing GATT service: /org/bluez/hci0/dev_C4_33_13_80_17_20/service000f
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:unregister_characteristic() Removing GATT characteristic: /org/bluez/hci0/dev_C4_33_13_80_17_20/service000f/char0010
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:unregister_characteristic() Removing GATT characteristic: /org/bluez/hci0/dev_C4_33_13_80_17_20/service000f/char0012
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:notify_client_unref() owner :1.70
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:notify_client_free() owner :1.70
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:unregister_descriptor() Removing GATT descriptor: /org/bluez/hci0/dev_C4_33_13_80_17_20/service000f/char0012/desc0014
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:unregister_characteristic() Removing GATT characteristic: /org/bluez/hci0/dev_C4_33_13_80_17_20/service000f/char0015
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:notify_client_unref() owner :1.70
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:notify_client_free() owner :1.70
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:unregister_descriptor() Removing GATT descriptor: /org/bluez/hci0/dev_C4_33_13_80_17_20/service000f/char0015/desc0017
bluetoothd[3432]: ../bluez-5.50/attrib/gattrib.c:g_attrib_unref() 0x55fffe0c3bf0: g_attrib_unref=0 
bluetoothd[3432]: ../bluez-5.50/src/device.c:device_free() 0x55fffe0b99d0
bluetoothd[3432]: ../bluez-5.50/plugins/policy.c:disconnect_cb() reason 2
bluetoothd[3432]: ../bluez-5.50/src/adapter.c:bonding_attempt_complete() hci0 bdaddr C4:33:13:80:17:20 type 2 status 0xe
bluetoothd[3432]: ../bluez-5.50/src/adapter.c:resume_discovery() 
bluetoothd[3432]: ../bluez-5.50/src/adapter.c:connected_callback() hci0 device C4:33:13:80:17:20 connected eir_len 23
bluetoothd[3432]: ../bluez-5.50/src/device.c:device_create() dst C4:33:13:80:17:20
bluetoothd[3432]: ../bluez-5.50/src/device.c:device_new() address C4:33:13:80:17:20
bluetoothd[3432]: ../bluez-5.50/src/device.c:device_new() Creating device /org/bluez/hci0/dev_C4_33_13_80_17_20
bluetoothd[3432]: ../bluez-5.50/src/adapter.c:dev_disconnected() Device C4:33:13:80:17:20 disconnected, reason 2
bluetoothd[3432]: ../bluez-5.50/src/adapter.c:adapter_remove_connection() 
bluetoothd[3432]: ../bluez-5.50/src/adapter.c:adapter_remove_connection() Removing temporary device /org/bluez/hci0/dev_C4_33_13_80_17_20
bluetoothd[3432]: ../bluez-5.50/src/device.c:device_remove() Removing device /org/bluez/hci0/dev_C4_33_13_80_17_20
bluetoothd[3432]: ../bluez-5.50/src/device.c:btd_device_unref() Freeing device /org/bluez/hci0/dev_C4_33_13_80_17_20
bluetoothd[3432]: ../bluez-5.50/src/device.c:device_free() 0x55fffe0d5640
bluetoothd[3432]: ../bluez-5.50/plugins/policy.c:disconnect_cb() reason 2
bluetoothd[3432]: ../bluez-5.50/src/adapter.c:bonding_attempt_complete() hci0 bdaddr C4:33:13:80:17:20 type 2 status 0xe
bluetoothd[3432]: ../bluez-5.50/src/adapter.c:resume_discovery() 
bluetoothd[3432]: ../bluez-5.50/src/device.c:btd_device_set_temporary() temporary 1
bluetoothd[3432]: ../bluez-5.50/src/service.c:change_state() 0x55fffe0bcbe0: device C4:53:23:00:38:10 profile gap-profile state changed: connected -> disconnecting (0)
bluetoothd[3432]: ../bluez-5.50/src/service.c:change_state() 0x55fffe0bcbe0: device C4:53:23:00:38:10 profile gap-profile state changed: disconnecting -> disconnected (0)
bluetoothd[3432]: ../bluez-5.50/src/adapter.c:dev_disconnected() Device C4:53:23:00:38:10 disconnected, reason 2
bluetoothd[3432]: ../bluez-5.50/src/adapter.c:adapter_remove_connection() 
bluetoothd[3432]: ../bluez-5.50/src/adapter.c:adapter_remove_connection() Removing temporary device /org/bluez/hci0/dev_C4_53_23_00_38_10
bluetoothd[3432]: ../bluez-5.50/src/device.c:device_remove() Removing device /org/bluez/hci0/dev_C4_53_23_00_38_10
bluetoothd[3432]: ../bluez-5.50/src/service.c:change_state() 0x55fffe0bcbe0: device C4:53:23:00:38:10 profile gap-profile state changed: disconnected -> unavailable (0)
bluetoothd[3432]: ../bluez-5.50/profiles/gap/gas.c:gap_remove() GAP profile remove (C4:53:23:00:38:10)
bluetoothd[3432]: ../bluez-5.50/src/service.c:btd_service_unref() 0x55fffe0bcbe0: ref=0
bluetoothd[3432]: ../bluez-5.50/src/service.c:change_state() 0x55fffe0b3770: device C4:53:23:00:38:10 profile :1.70/ntouch/app/6e400001-b5a3-f393-e0a9-e50e24dcca9e state changed: connecting -> disconnected (-103)
bluetoothd[3432]: ../bluez-5.50/src/device.c:device_profile_connected() :1.70/ntouch/app/6e400001-b5a3-f393-e0a9-e50e24dcca9e Software caused connection abort (103)
bluetoothd[3432]: ../bluez-5.50/src/service.c:change_state() 0x55fffe0b3770: device C4:53:23:00:38:10 profile :1.70/ntouch/app/6e400001-b5a3-f393-e0a9-e50e24dcca9e state changed: disconnected -> unavailable (0)
bluetoothd[3432]: ../bluez-5.50/src/gatt-database.c:profile_device_remove() :1.70/ntouch/app/6e400001-b5a3-f393-e0a9-e50e24dcca9e removed
bluetoothd[3432]: ../bluez-5.50/src/service.c:btd_service_unref() 0x55fffe0b3770: ref=0
bluetoothd[3432]: ../bluez-5.50/src/device.c:btd_device_unref() Freeing device /org/bluez/hci0/dev_C4_53_23_00_38_10
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:unregister_service() Removing GATT service: /org/bluez/hci0/dev_C4_53_23_00_38_10/service000a
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:unregister_service() Removing GATT service: /org/bluez/hci0/dev_C4_53_23_00_38_10/service000b
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:unregister_characteristic() Removing GATT characteristic: /org/bluez/hci0/dev_C4_53_23_00_38_10/service000b/char000c
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:unregister_descriptor() Removing GATT descriptor: /org/bluez/hci0/dev_C4_53_23_00_38_10/service000b/char000c/desc000e
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:unregister_service() Removing GATT service: /org/bluez/hci0/dev_C4_53_23_00_38_10/service000f
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:unregister_characteristic() Removing GATT characteristic: /org/bluez/hci0/dev_C4_53_23_00_38_10/service000f/char0010
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:unregister_characteristic() Removing GATT characteristic: /org/bluez/hci0/dev_C4_53_23_00_38_10/service000f/char0012
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:notify_client_unref() owner :1.70
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:notify_client_free() owner :1.70
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:unregister_descriptor() Removing GATT descriptor: /org/bluez/hci0/dev_C4_53_23_00_38_10/service000f/char0012/desc0014
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:unregister_characteristic() Removing GATT characteristic: /org/bluez/hci0/dev_C4_53_23_00_38_10/service000f/char0015
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:notify_client_unref() owner :1.70
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:notify_client_free() owner :1.70
bluetoothd[3432]: ../bluez-5.50/src/gatt-client.c:unregister_descriptor() Removing GATT descriptor: /org/bluez/hci0/dev_C4_53_23_00_38_10/service000f/char0015/desc0017
bluetoothd[3432]: ../bluez-5.50/attrib/gattrib.c:g_attrib_unref() 0x55fffe0ab990: g_attrib_unref=0 
bluetoothd[3432]: ../bluez-5.50/src/device.c:device_free() 0x55fffe0bc500
bluetoothd[3432]: ../bluez-5.50/plugins/policy.c:disconnect_cb() reason 2
bluetoothd[3432]: ../bluez-5.50/src/adapter.c:bonding_attempt_complete() hci0 bdaddr C4:53:23:00:38:10 type 2 status 0xe
bluetoothd[3432]: ../bluez-5.50/src/adapter.c:resume_discovery() 
bluetoothd[3432]: ../bluez-5.50/src/device.c:btd_device_set_temporary() temporary 1
bluetoothd[3432]: ../bluez-5.50/src/service.c:change_state() 0x55fffe0b9880: device C4:53:23:00:56:A0 profile gap-profile state changed: connected -> disconnecting (0)
bluetoothd[3432]: ../bluez-5.50/src/service.c:change_state() 0x55fffe0b9880: device C4:53:23:00:56:A0 profile gap-profile state changed: disconnecting -> disconnected (0)


If you could help me figure out why it works in once instance and not the second, I would very much appreciate it.

Tom Green


^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
@ 2022-02-25  0:04 张健
  0 siblings, 0 replies; 278+ messages in thread
From: 张健 @ 2022-02-25  0:04 UTC (permalink / raw)
  To: openbmc

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

From: openbmc-request@lists.ozlabs.org
Date: 2月25日 (周五) 05:00
Subject: [External] openbmc Digest, Vol 78, Issue 123
To: <openbmc@lists.ozlabs.org>
Send openbmc mailing list submissions toopenbmc@lists.ozlabs.orgTo
subscribe or unsubscribe via the World Wide Web, visit
https://lists.ozlabs.org/listinfo/openbmcor, via email, send a message with
subject or body 'help' toopenbmc-request@lists.ozlabs.orgYou can reach the
person managing the list atopenbmc-owner@lists.ozlabs.orgWhen replying,
please edit your Subject line so it is more specificthan "Re: Contents of
openbmc digest..."Today's Topics: 1. [u-boot, v2019.04-aspeed-openbmc 1/1]
fix compiling warnings for AST2600 A1 SPL (Jamin Lin) 2. [u-boot,
v2019.04-aspeed-openbmc 0/1] fix compiling warnings for AST2600 A1 SPL
(Jamin Lin) 3. Re: I3C Binding DSP0233 (Matt Johnston) 4. Re: New
u-boot-aspeed-sdk runs slow and cause wdt2 timeout on ast2500 (Joel
Stanley) 5. Re: [u-boot,v2019.04-aspeed-openbmc 1/1] fix compiling warnings
for AST2600 A1 SPL (Joel Stanley) 6. Re: Checking for network online
(Patrick Williams) 7. Re: [PATCH 1/2] pinctrl: aspeed: Enable pass-through
on GPIOE1 and GPIOE3 free (Bills, Jason
M)----------------------------------------------------------------------Message:
1Date: Thu, 24 Feb 2022 16:11:21 +0800From: Jamin Lin To: , , Cc: ,
Subject: [u-boot, v2019.04-aspeed-openbmc 1/1] fix compiling warningsfor
AST2600 A1 SPLMessage-ID:
<20220224081121.10389-2-jamin_lin@aspeedtech.com>Content-Type:
text/plainremove duplicated defineSigned-off-by: Jamin Lin ---
include/configs/evb_ast2600a1_spl.h | 7 ------- 1 file changed, 7
deletions(-)diff --git a/include/configs/evb_ast2600a1_spl.h
b/include/configs/evb_ast2600a1_spl.hindex 655896b237..006cc4345b 100644---
a/include/configs/evb_ast2600a1_spl.h+++
b/include/configs/evb_ast2600a1_spl.h@@ -42,13 +42,6 @@ #endif #endif -/*
SPL */-#define CONFIG_SPL_TEXT_BASE0x00000000-#define
CONFIG_SPL_MAX_SIZE0x0000E800-#define CONFIG_SPL_STACK0x10010000-#define
CONFIG_SPL_BSS_START_ADDR0x90000000-#define
CONFIG_SPL_BSS_MAX_SIZE0x00100000- #define CONFIG_SUPPORT_EMMC_BOOT
#endif/* __CONFIG_H */-- 2.17.1------------------------------Message:
2Date: Thu, 24 Feb 2022 16:11:20 +0800From: Jamin Lin To: , , Cc: ,
Subject: [u-boot, v2019.04-aspeed-openbmc 0/1] fix compiling warningsfor
AST2600 A1 SPLMessage-ID:
<20220224081121.10389-1-jamin_lin@aspeedtech.com>Content-Type:
text/plainremove duplicated defineJamin Lin (1): fix compiling warnings for
AST2600 A1 SPL include/configs/evb_ast2600a1_spl.h | 7 ------- 1 file
changed, 7 deletions(-)-- 2.17.1------------------------------Message:
3Date: Thu, 24 Feb 2022 11:06:39 +0800From: Matt Johnston To: Rahul Kapoor
,"openbmc@lists.ozlabs.org" Subject: Re: I3C Binding DSP0233Message-ID:<
73c46f0b8b609edddad0e314ead38c9b9d72517e.camel@codeconstruct.com.au>Content-Type:
text/plain; charset="UTF-8"On Wed, 2022-02-23 at 16:45 +0000, Rahul Kapoor
wrote:> Hi,> ?> I would like to understand if OpenBMC project currently
supports MCTP over> I3C>
https://www.dmtf.org/sites/default/files/standards/documents/DSP0233_1.0.0.pdf>
? If not, are there plans to support it going forward? We are currently>
using Intel-BMC/libmctp for SMBus binding and plan to transition to in->
kernel MCTP in future.Hi Rahul,I'm not aware of any current work on
MCTP-over-I3C for OpenBMC or in-kernel.It could be added as another
in-kernel MCTP transport alongside the currentI2C net driver.I'm not sure
what the current status is for I3C drivers on BMC hardware.Kernel I3C will
only support Linux as an I3C Controller not Target, thoughthat would suit
many setups.Cheers,Matt------------------------------Message: 4Date: Thu,
24 Feb 2022 03:45:48 +0000From: Joel Stanley To: Lei Yu Cc: ChiaWei Wang ,
Troy Lee, Ryan Chen ,openbmc , tangyiwei.2022@bytedance.comSubject: Re: New
u-boot-aspeed-sdk runs slow and cause wdt2 timeout
onast2500Message-ID:Content-Type: text/plain; charset="UTF-8"On Wed, 23 Feb
2022 at 10:02, Lei Yu wrote:>> > > > > Could you share us the boot log with
timestamps?> > > > > It would be nice to know the time elapsed at each
stage.> > > >> > > > Pasted to https://pastebin.com/emseqW6c> > > > It
contains two logs, the first one is good, and the second has the issue.> >>
> Working:> > [2022-02-23 02:47:03] U-Boot 2019.04 (Jan 24 2022 - 10:18:18
+0000)> > [2022-02-23 02:47:06] ## Loading kernel from FIT Image at
20100000 ...> > [2022-02-23 02:47:12] Starting kernel ...> >> > 3 + 6
seconds.> >> > broken:> > [2022-02-23 02:58:07] U-Boot 2019.04 (Feb 15 2022
- 07:22:14 +0000)> > [2022-02-23 02:58:12] ## Loading kernel from FIT Image
at 20100000 ...> > [2022-02-23 02:58:22] Starting kernel ...> >> > 5 + 10
seconds.> >> > Interesting that the pre-hashing part is also slower.> >> >
The old branch was based on v00.04.03. The new branch is based on
v00.04.09.> >> > I wonder if this is the cause:> >> > $ git diff
v00.04.03..v00.04.09 -- configs/evb-ast2500_defconfig> > diff --git
a/configs/evb-ast2500_defconfig b/configs/evb-ast2500_defconfig> > index
9fcf55b05ebb..000ed3f90bdd 100644> > --- a/configs/evb-ast2500_defconfig> >
+++ b/configs/evb-ast2500_defconfig> > @@ -1,4 +1,5 @@> > CONFIG_ARM=y> >
+CONFIG_SYS_DCACHE_OFF=y> > CONFIG_ARCH_ASPEED=y> >
CONFIG_SYS_TEXT_BASE=0x0> > CONFIG_SYS_MALLOC_F_LEN=0x2000> >> > Lei, can
you re-test with CONFIG_SYS_DCACHE_OFF=n ?> >>> Yiwei helped to test with
CONFIG_SYS_DCACHE_OFF=n, and it works fine now.> So it seems we get the
root cause!I'm glad this worked. The bill is in the mail :)I would suggest
this is not the root cause. This is a workaround thatspeeds up booting
enough that you make it to linux, but if your kernelimage got a bit larger
(for example), it would take longer and theissue would show up again.To
properly fix the issue, we need to ensure the watchdog is serviced,as I
mentioned in my previous
email.Cheers,Joel------------------------------Message: 5Date: Thu, 24 Feb
2022 11:43:32 +0000From: Joel Stanley To: Jamin Lin Cc: OpenBMC Maillist ,
Andrew Jeffery, Troy Lee , Steven LeeSubject: Re:
[u-boot,v2019.04-aspeed-openbmc 1/1] fix compilingwarnings for AST2600 A1
SPLMessage-ID:Content-Type: text/plain; charset="UTF-8"On Thu, 24 Feb 2022
at 08:11, Jamin Lin wrote:>> remove duplicated define>> Signed-off-by:
Jamin Lin > ---> include/configs/evb_ast2600a1_spl.h | 7 -------> 1 file
changed, 7 deletions(-)>> diff --git a/include/configs/evb_ast2600a1_spl.h
b/include/configs/evb_ast2600a1_spl.h> index 655896b237..006cc4345b 100644>
--- a/include/configs/evb_ast2600a1_spl.h> +++
b/include/configs/evb_ast2600a1_spl.h> @@ -42,13 +42,6 @@> #endif> #endif>>
-/* SPL */> -#define CONFIG_SPL_TEXT_BASE 0x00000000> -#define
CONFIG_SPL_MAX_SIZE 0x0000E800> -#define CONFIG_SPL_STACK 0x10010000>
-#define CONFIG_SPL_BSS_START_ADDR 0x90000000> -#define
CONFIG_SPL_BSS_MAX_SIZE 0x00100000A good cleanup. While we're here, can we
clean up the various ast2600config headers?There is a large diff between
the a0 and the a1 spl header. I know theA0 has a smaller SRAM. Are there
any other differences required?> -> #define CONFIG_SUPPORT_EMMC_BOOT>>
#endif /* __CONFIG_H */> --> 2.17.1>------------------------------Message:
6Date: Thu, 24 Feb 2022 14:09:11 -0600From: Patrick Williams To: Johnathan
Mantey Cc: Jiaqing Zhao , Lei Yu, Jeremy Kerr ,OpenBMC Maillist Subject:
Re: Checking for network onlineMessage-ID: Content-Type: text/plain;
charset="us-ascii"On Wed, Feb 23, 2022 at 12:04:12PM -0800, Johnathan
Mantey wrote:> On 2/23/22 09:44, Jiaqing Zhao wrote:> > On 2022-02-23
21:48, Patrick Williams wrote:> >> On Wed, Feb 23, 2022 at 10:09:19AM
+0800, Jiaqing Zhao wrote:> There may be openbmc powered servers that do
use the distributed logging > provided by rsyslogd. If there are then
globally removing network-online > from the rsyslog service file is
undesirable. I consider the same to be > true of assigning a default
RequiredForOnline=false.> > Based on the above, it's my opinion this is a
vendor based decision for > how to configure
rsyslog/systemd-networkd-wait-online.I agree we shouldn't enable this
globally, but that doesn't mean we can't adda simple PKGCONFIG that allows
it to be enabled/disabled as needed. That waywe only have the single
`PKGCONFIG:append` line in vendor layers and vendorsthat have a problem
with it can leave it same as upstream.-- Patrick Williams--------------
next part --------------A non-text attachment was scrubbed...Name:
signature.ascType: application/pgp-signatureSize: 833 bytesDesc: not
availableURL: ------------------------------Message: 7Date: Thu, 24 Feb
2022 14:03:48 -0700From: "Bills, Jason M" To: Joel Stanley , Andrew Jeffery
Cc: "openbmc@lists.ozlabs.org" Subject: Re: [PATCH 1/2] pinctrl: aspeed:
Enable pass-through onGPIOE1 and GPIOE3 freeMessage-ID: <
7d792cb4-9eaf-cbdc-d39c-72217d5ebcf8@linux.intel.com>Content-Type:
text/plain; charset=UTF-8; format=flowedOn 2/6/2022 11:45 PM, Joel Stanley
wrote:> On Wed, 2 Feb 2022 at 22:49, Andrew Jeffery wrote:>>>>>>>> On Thu,
3 Feb 2022, at 06:29, Bills, Jason M wrote:>>> This change adds a
gpio_disable_free() implementation that checks>>> if the GPIO being freed
is GPIOE1 (33) or GPIOE3 (35) and will>>> re-enable the pass-through
mux.>>>> Okay. So trying to pull back from the implementation for a
moment:>>>> Perhaps we can view pass-through as a property on a pair of
GPIOs, rather than a mux state? I think it would be better if we could, for
instance, annotate this in the devicetree?>>>> If we did that I don't think
we're require this awkward and pin-specific implementation of the free
callback for GPIOs.>>>> If pass-through is enabled it puts constraints on
how the pins are used if they're requested as GPIOs, but we can add those
dynamic checks in the GPIO driver.>>>> Let me think about it some more.>>>>
Thanks for surfacing the patch.> > This is for the kernel, I assume.> >
Jason, you should send the patch to the upstream lists (use>
get_maintainers.pl) for review.Sorry for the delay. I found the right lists
with get_maintainers.pl. Should I send these patches to the upstream lists
as they are, or do they need to be tweaked?Thanks!-Jason> > Cheers,> >
JoelEnd of openbmc Digest, Vol 78, Issue
123****************************************

[-- Attachment #2: Type: text/html, Size: 13502 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2020-11-28 14:32 Rroach
  0 siblings, 0 replies; 278+ messages in thread
From: Rroach @ 2020-11-28 14:32 UTC (permalink / raw)
  To: xen-devel

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

Hi, I'm attempting to use address sanitizer in locating bugs in Xen 4-13, while use address sanitizer in tools modules, while I ran some basic instructions like xl, Xen report such bug:
=================================================================
==2863==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 296 byte(s) in 11 object(s) allocated from:
&nbsp; &nbsp; #0 0x7f5b91aefd28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc1d28)
&nbsp; &nbsp; #1 0x467997&nbsp; (/usr/bin/x86_64-linux-gnu-gcc-6+0x467997)

Indirect leak of 10 byte(s) in 1 object(s) allocated from:
&nbsp; &nbsp; #0 0x7f5b91aefd28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc1d28)
&nbsp; &nbsp; #1 0x467997&nbsp; (/usr/bin/x86_64-linux-gnu-gcc-6+0x467997)

SUMMARY: AddressSanitizer: 306 byte(s) leaked in 12 allocation(s).
/root/faultxen/tools/libs/toolcore/../../../tools/Rules.mk:224: recipe for target 'headers.chk' failed
make[5]: *** [headers.chk] Error 1

==7520==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 10 byte(s) in 1 object(s) allocated from:
&nbsp; &nbsp; #0 0x7fd1028c8d28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc1d28)
&nbsp; &nbsp; #1 0x7fd1022e43b9 in __strdup (/lib/x86_64-linux-gnu/libc.so.6+0x803b9)

SUMMARY: AddressSanitizer: 10 byte(s) leaked in 1 allocation(s).
=================================================================
It seems this bug is very low-level, and affects many basic operations, do you have any idea what cause such bugs?

[-- Attachment #2: Type: text/html, Size: 1667 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2020-09-16 16:33 Dan Jakubiec
  0 siblings, 0 replies; 278+ messages in thread
From: Dan Jakubiec @ 2020-09-16 16:33 UTC (permalink / raw)
  To: ceph-devel



^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2020-04-07  5:06 number201724
  0 siblings, 0 replies; 278+ messages in thread
From: number201724 @ 2020-04-07  5:06 UTC (permalink / raw)
  To: git

help


^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2020-03-24 10:13 Help Chained Up
@ 2020-03-25 15:34 ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 278+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-03-25 15:34 UTC (permalink / raw)
  To: Chained Up, qemu-devel

Hi Chained,

On 3/24/20 11:13 AM, Chained Up wrote:
> Please can some explain what should i do here?

You might have sent your question to a wrong list (this list is about 
QEMU: https://www.qemu.org/).

>   Prepare import-libraries using Borland's implib program.  The ".lib"
>      files that it uses are a different format than the import libraries
>      distributed with GnuWin2.  From Lynx's source directory run bcblibs
> 
> Environment:
>      At this point, the bin-directory for the compiler and for the GnuWin32
>      libraries should be in your path.
> 
> Building:
>      From Lynx's source directory
> cd src\chrtrans
> makew32 clean
> makew32
> cd ..\..
> makew32 clean
> makew32



^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
@ 2020-03-24 10:13 Chained Up
  2020-03-25 15:34 ` Help Philippe Mathieu-Daudé
  0 siblings, 1 reply; 278+ messages in thread
From: Chained Up @ 2020-03-24 10:13 UTC (permalink / raw)
  To: qemu-devel

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

Please can some explain what should i do here?
 Prepare import-libraries using Borland's implib program.  The ".lib"
    files that it uses are a different format than the import libraries
    distributed with GnuWin2.  From Lynx's source directory run bcblibs

Environment:
    At this point, the bin-directory for the compiler and for the GnuWin32
    libraries should be in your path.

Building:
    From Lynx's source directory
cd src\chrtrans
makew32 clean
makew32
cd ..\..
makew32 clean
makew32

[-- Attachment #2: Type: text/html, Size: 623 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2020-03-21 19:26 don fisher
  0 siblings, 0 replies; 278+ messages in thread
From: don fisher @ 2020-03-21 19:26 UTC (permalink / raw)
  To: linux-kernel

I want to change my subscription. How do I do it?

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2020-02-07  5:26 Frank Esposito
  0 siblings, 0 replies; 278+ messages in thread
From: Frank Esposito @ 2020-02-07  5:26 UTC (permalink / raw)
  To: fio

help


^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2020-01-17 19:31 Fairouz Fakhfakh
  0 siblings, 0 replies; 278+ messages in thread
From: Fairouz Fakhfakh @ 2020-01-17 19:31 UTC (permalink / raw)
  To: qemu-devel

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

Hello,
I would like to use qemu to install a virtual machine (VM) in Ubuntu.
I need a minimal VM  which contains only jdk (openjdk).

Can someone help me, please.
Thank you in advance.

[-- Attachment #2: Type: text/html, Size: 443 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
       [not found] <20191121140040.GB9271.ref@pc1lin.fred.org>
@ 2019-11-21 14:00 ` Fred
  0 siblings, 0 replies; 278+ messages in thread
From: Fred @ 2019-11-21 14:00 UTC (permalink / raw)
  To: linux-nfs

help

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2019-03-14  6:39 Yubin
  0 siblings, 0 replies; 278+ messages in thread
From: Yubin @ 2019-03-14  6:39 UTC (permalink / raw)
  To: dev


-------------------------------------------------------------------------------------------------------------------------------------
本邮件及其附件含有新华三集团的保密信息,仅限于发送给上面地址中列出
的个人或群组。禁止任何其他人以任何形式使用(包括但不限于全部或部分地泄露、复制、
或散发)本邮件中的信息。如果您错收了本邮件,请您立即电话或邮件通知发件人并删除本
邮件!
This e-mail and its attachments contain confidential information from New H3C, which is
intended only for the person or entity whose address is listed above. Any use of the
information contained herein in any way (including, but not limited to, total or partial
disclosure, reproduction, or dissemination) by persons other than the intended
recipient(s) is prohibited. If you receive this e-mail in error, please notify the sender
by phone or email immediately and delete it!

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2018-11-21 13:32 _
  0 siblings, 0 replies; 278+ messages in thread
From: _ @ 2018-11-21 13:32 UTC (permalink / raw)
  To: lkml

help

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2018-10-17  8:33 help Lorenzo Chelini
@ 2018-10-17  9:28 ` Madhavan Srinivasan
  0 siblings, 0 replies; 278+ messages in thread
From: Madhavan Srinivasan @ 2018-10-17  9:28 UTC (permalink / raw)
  To: linuxppc-dev



On Wednesday 17 October 2018 02:03 PM, Lorenzo Chelini wrote:
> Hi All,
>
> I am a PhD at IBM Zurich. I am playing around with the new POWER9 servers.
> I am interested in plotting a roofline model for a given application, but I
> need
> to measure the traffic to and from the memory.
> Ideally, what I would like to measure is the traffic at the memory
> controller level.

Yes, you can get that data using Nest IMC counters. And perf
has support to expose these counters. Here is a usage example

$ perf stat -e nest_mcs01_imc/PM_MCS01_128B_RD_DISP_PORT01/  -I 1000 
--per-socket

Above command gets you all the Read traffic via specific memory 
controller/port.
Option "-I" reads the counter every sec and "--per-socket" presents the 
data socket wise.

"perf list nest_mcs" command will list all supportted events for memory 
controller.


Maddy

>
> Do you know if this is possible using perf? If yes, which performance
> counters I should
> query to have an estimate on the memory traffic?
>
> Thanks for your time.
> Looking forward to hearing from you.
> Best regards,
> Lorenzo Chelini
>


^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2018-10-17  8:33 Lorenzo Chelini
  2018-10-17  9:28 ` help Madhavan Srinivasan
  0 siblings, 1 reply; 278+ messages in thread
From: Lorenzo Chelini @ 2018-10-17  8:33 UTC (permalink / raw)
  To: linuxppc-dev


Hi All,

I am a PhD at IBM Zurich. I am playing around with the new POWER9 servers.
I am interested in plotting a roofline model for a given application, but I
need
to measure the traffic to and from the memory.
Ideally, what I would like to measure is the traffic at the memory
controller level.

Do you know if this is possible using perf? If yes, which performance
counters I should
query to have an estimate on the memory traffic?

Thanks for your time.
Looking forward to hearing from you.
Best regards,
Lorenzo Chelini


^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2018-08-07 13:01 Marcel J.E. Mol
  0 siblings, 0 replies; 278+ messages in thread
From: Marcel J.E. Mol @ 2018-08-07 13:01 UTC (permalink / raw)
  To: linux-kernel

help

-- 
     ======--------         Marcel J.E. Mol                MESA Consulting B.V.
    =======---------        ph. +31-(0)6-54724868
    =======---------        marcel@mesa.nl                 Nootdorp
__==== www.mesa.nl ---____U_n_i_x______I_n_t_e_r_n_e_t____ The Netherlands ____
 They couldn't think of a number,     Linux user 1148  --  www linuxcounter net
    so they gave me a name!  -- Rupert Hine  --  www ruperthine com --

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2018-05-06 19:28 Richard Lee
  0 siblings, 0 replies; 278+ messages in thread
From: Richard Lee @ 2018-05-06 19:28 UTC (permalink / raw)
  To: linux-media



^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
  2018-01-06 16:44 Help Farouk Maâboudallah
  2018-01-06 22:40 ` Help Ozgur
  2018-01-07  0:56 ` Help Tobin C. Harding
@ 2018-01-07  1:39 ` valdis.kletnieks at vt.edu
  2 siblings, 0 replies; 278+ messages in thread
From: valdis.kletnieks at vt.edu @ 2018-01-07  1:39 UTC (permalink / raw)
  To: kernelnewbies

On Sat, 06 Jan 2018 17:44:46 +0100, Farouk Ma?boudallah said:

> I'm new here with you guys. I have been using Linux for 6 months ... And
> now I'm looking forward to develop and improve my skills.
> I'm a student in digital mechanics which means developing, programming and
> simulating in mechanical engineering. I have C, Matlab and Python as a
> background (another code for simulation like ansys, abaqus, ...). Now, I
> want to learn how to develop linux kernel or something like that ... Any
> helps, any suggestion are welcome :)

https://lists.kernelnewbies.org/pipermail/kernelnewbies/2017-April/017765.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 486 bytes
Desc: not available
URL: <http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20180106/f9a323cd/attachment.sig>

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
  2018-01-06 16:44 Help Farouk Maâboudallah
  2018-01-06 22:40 ` Help Ozgur
@ 2018-01-07  0:56 ` Tobin C. Harding
  2018-01-07  1:39 ` Help valdis.kletnieks at vt.edu
  2 siblings, 0 replies; 278+ messages in thread
From: Tobin C. Harding @ 2018-01-07  0:56 UTC (permalink / raw)
  To: kernelnewbies

On Sat, Jan 06, 2018 at 05:44:46PM +0100, Farouk Ma?boudallah wrote:
> Good evening everyone :)
> 
> I'm new here with you guys. I have been using Linux for 6 months ... And
> now I'm looking forward to develop and improve my skills.
> I'm a student in digital mechanics which means developing, programming and
> simulating in mechanical engineering. I have C, Matlab and Python as a
> background (another code for simulation like ansys, abaqus, ...). Now, I
> want to learn how to develop linux kernel or something like that ... Any
> helps, any suggestion are welcome :)

Have you done a bunch of userland programming in the Linux environment
during that 6 months? Preferably C systems programming?

	Tobin

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
  2018-01-06 16:44 Help Farouk Maâboudallah
@ 2018-01-06 22:40 ` Ozgur
  2018-01-07  0:56 ` Help Tobin C. Harding
  2018-01-07  1:39 ` Help valdis.kletnieks at vt.edu
  2 siblings, 0 replies; 278+ messages in thread
From: Ozgur @ 2018-01-06 22:40 UTC (permalink / raw)
  To: kernelnewbies

An HTML attachment was scrubbed...
URL: <http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20180107/d9d3b7df/attachment.html>

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
@ 2018-01-06 16:44 Farouk Maâboudallah
  2018-01-06 22:40 ` Help Ozgur
                   ` (2 more replies)
  0 siblings, 3 replies; 278+ messages in thread
From: Farouk Maâboudallah @ 2018-01-06 16:44 UTC (permalink / raw)
  To: kernelnewbies

Good evening everyone :)

I'm new here with you guys. I have been using Linux for 6 months ... And
now I'm looking forward to develop and improve my skills.
I'm a student in digital mechanics which means developing, programming and
simulating in mechanical engineering. I have C, Matlab and Python as a
background (another code for simulation like ansys, abaqus, ...). Now, I
want to learn how to develop linux kernel or something like that ... Any
helps, any suggestion are welcome :)

Thanks,

Linuxely
For GNU/UNIX
For free software,

-- 
*P* Pour pr?server notre environnement, merci de n'imprimer cet Email que
si n?cessaire  !
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20180106/126d4112/attachment.html>

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2017-09-28  1:21 Help Nityananda
@ 2017-09-28  3:06 ` Christian Couder
  0 siblings, 0 replies; 278+ messages in thread
From: Christian Couder @ 2017-09-28  3:06 UTC (permalink / raw)
  To: Nityananda; +Cc: git

Hi,

On Thu, Sep 28, 2017 at 3:21 AM, Nityananda <nityanandagohain@gmail.com> wrote:
> Hello,
> I am new to this community. I am facing a problem while using the
> "make" command inside the "t/" folder.
>
> The error is
>
>
> "1..31
> Makefile:49: recipe for target 't5551-http-fetch-smart.sh' failed
> make[1]: *** [t5551-http-fetch-smart.sh] Error 1
> make[1]: Leaving directory '/home/nitya/projects/git/t'
> Makefile:36: recipe for target 'test' failed
> make: *** [test] Error 2"

Could you try running "./t5551-http-fetch-smart.sh -v -i" to get more
information about the failing test?

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
@ 2017-09-28  1:21 Nityananda
  2017-09-28  3:06 ` Help Christian Couder
  0 siblings, 1 reply; 278+ messages in thread
From: Nityananda @ 2017-09-28  1:21 UTC (permalink / raw)
  To: git

Hello,
I am new to this community. I am facing a problem while using the
"make" command inside the "t/" folder.

The error is 


"1..31
Makefile:49: recipe for target 't5551-http-fetch-smart.sh' failed
make[1]: *** [t5551-http-fetch-smart.sh] Error 1
make[1]: Leaving directory '/home/nitya/projects/git/t'
Makefile:36: recipe for target 'test' failed
make: *** [test] Error 2"

It will really be an act of kindness if you help me out.

Regards,
Nityananda Gohain

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2017-05-17 14:26 James Okken
  0 siblings, 0 replies; 278+ messages in thread
From: James Okken @ 2017-05-17 14:26 UTC (permalink / raw)
  To: kvm list

help

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2017-03-10 18:15   ` help Khem Raj
@ 2017-03-13  4:28     ` Suneetha Lakshmi G
  0 siblings, 0 replies; 278+ messages in thread
From: Suneetha Lakshmi G @ 2017-03-13  4:28 UTC (permalink / raw)
  To: Khem Raj; +Cc: yocto

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

Hi Khem,


Sorry for late response .

While building Kernel 4.1.17 with gcc 4.9.4 we are using gcc as a External toolchain (asdk-4.9.4-a7-EL-3.10-g2.19-a32nt-160219)


Regards,

Suneetha

________________________________
From: Khem Raj <raj.khem@gmail.com>
Sent: Friday, March 10, 2017 11:45:23 PM
To: Suneetha Lakshmi G
Cc: yocto@yoctoproject.org
Subject: Re: [yocto] help



On Fri, Mar 10, 2017 at 6:25 AM, Suneetha Lakshmi G <suneetha.g@tataelxsi.co.in<mailto:suneetha.g@tataelxsi.co.in>> wrote:

Hi All,


Im new to yocto and trying to build for my customer device im facing this issue.


| arm-linux-gnueabi-xgcc: error: unrecognized command line option '-mgeneral-regs-only'
| arm-linux-gnueabi-xgcc: error: unrecognized command line option '-mcmodel=large'
| make: *** [opkg-compare-versions] Error 1
| ERROR: oe_runmake failed

Please guide how to progress further.


​xgcc is internal name during building/testing gcc itself, which package it failing like this for you ?

[-- Attachment #2: Type: text/html, Size: 2574 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2017-03-10 14:25 ` help Suneetha Lakshmi G
  2017-03-10 14:28   ` help Robert P. J. Day
  2017-03-10 14:39   ` help Schmitt, Richard
@ 2017-03-10 18:15   ` Khem Raj
  2017-03-13  4:28     ` help Suneetha Lakshmi G
  2 siblings, 1 reply; 278+ messages in thread
From: Khem Raj @ 2017-03-10 18:15 UTC (permalink / raw)
  To: Suneetha Lakshmi G; +Cc: yocto

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

On Fri, Mar 10, 2017 at 6:25 AM, Suneetha Lakshmi G <
suneetha.g@tataelxsi.co.in> wrote:

> Hi All,
>
>
> Im new to yocto and trying to build for my customer device im facing this
> issue.
>
>
> | arm-linux-gnueabi-xgcc: error: unrecognized command line option
> '-mgeneral-regs-only'
> | arm-linux-gnueabi-xgcc: error: unrecognized command line option
> '-mcmodel=large'
> | make: *** [opkg-compare-versions] Error 1
> | ERROR: oe_runmake failed
>
> Please guide how to progress further.
>
>
​xgcc is internal name during building/testing gcc itself, which package it
failing like this for you ?

[-- Attachment #2: Type: text/html, Size: 1360 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2017-03-10 14:25 ` help Suneetha Lakshmi G
  2017-03-10 14:28   ` help Robert P. J. Day
@ 2017-03-10 14:39   ` Schmitt, Richard
  2017-03-10 18:15   ` help Khem Raj
  2 siblings, 0 replies; 278+ messages in thread
From: Schmitt, Richard @ 2017-03-10 14:39 UTC (permalink / raw)
  To: Suneetha Lakshmi G, yocto

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



From: yocto-bounces@yoctoproject.org [mailto:yocto-bounces@yoctoproject.org] On Behalf Of Suneetha Lakshmi G
Sent: Friday, March 10, 2017 8:25 AM
To: yocto@yoctoproject.org
Subject: Re: [yocto] help


Hi All,



Im new to yocto and trying to build for my customer device im facing this issue.


| arm-linux-gnueabi-xgcc: error: unrecognized command line option '-mgeneral-regs-only'
| arm-linux-gnueabi-xgcc: error: unrecognized command line option '-mcmodel=large'
| make: *** [opkg-compare-versions] Error 1
| ERROR: oe_runmake failed

Please guide how to progress further.

[ras] please provide what target you are building from, where you got your yocto layers from, what bitbake command you are using.  My WAG is that your toolchain is misconfigured, possible because you haven't specified a MACHINE variable.

Regards,
Suneetha


________________________________
From: yocto-bounces@yoctoproject.org<mailto:yocto-bounces@yoctoproject.org> <yocto-bounces@yoctoproject.org<mailto:yocto-bounces@yoctoproject.org>> on behalf of yocto-request@yoctoproject.org<mailto:yocto-request@yoctoproject.org> <yocto-request@yoctoproject.org<mailto:yocto-request@yoctoproject.org>>
Sent: Friday, March 10, 2017 7:20 PM
To: yocto@yoctoproject.org<mailto:yocto@yoctoproject.org>
Subject: yocto Digest, Vol 78, Issue 45

Send yocto mailing list submissions to
        yocto@yoctoproject.org<mailto:yocto@yoctoproject.org>

To subscribe or unsubscribe via the World Wide Web, visit
        https://lists.yoctoproject.org/listinfo/yocto
or, via email, send a message with subject or body 'help' to
        yocto-request@yoctoproject.org<mailto:yocto-request@yoctoproject.org>

You can reach the person managing the list at
        yocto-owner@yoctoproject.org<mailto:yocto-owner@yoctoproject.org>

When replying, please edit your Subject line so it is more specific
than "Re: Contents of yocto digest..."


Today's Topics:

   1. Re: Raspberry Pi2 Fails to boot into LXDE. (Steve Plant)
   2. Re: update mechanisms (Kristian Amlie)
   3. Proposal: dealing with language-specific build
      tools/dependency management tools (Alexander Kanavin)


----------------------------------------------------------------------

Message: 1
Date: Fri, 10 Mar 2017 13:31:40 +0000
From: Steve Plant <steove@hotmail.com<mailto:steove@hotmail.com>>
To: Gary Thomas <gary@mlbassoc.com<mailto:gary@mlbassoc.com>>
Cc: "yocto@yoctoproject.org<mailto:yocto@yoctoproject.org>" <yocto@yoctoproject.org<mailto:yocto@yoctoproject.org>>
Subject: Re: [yocto] Raspberry Pi2 Fails to boot into LXDE.
Message-ID:
        <SG2PR0301MB20164F99A2AF83AFC01ECDCFD1200@SG2PR0301MB2016.apcprd03.prod.outlook.com<mailto:SG2PR0301MB20164F99A2AF83AFC01ECDCFD1200@SG2PR0301MB2016.apcprd03.prod.outlook.com>>

Content-Type: text/plain; charset="iso-8859-1"

Thanks Gary,


You where spot on! I have now been able to SSH into the rpi and have posted the Xorg.log file to the mailing list.


I think Xorg is failing to load correctly because it cannot find the evdev module. Looking into how to fix this now......


Regards, Steve.


________________________________
From: yocto-bounces@yoctoproject.org<mailto:yocto-bounces@yoctoproject.org> <yocto-bounces@yoctoproject.org<mailto:yocto-bounces@yoctoproject.org>> on behalf of Gary Thomas <gary@mlbassoc.com<mailto:gary@mlbassoc.com>>
Sent: Friday, 10 March 2017 5:42 a.m.
To: yocto@yoctoproject.org<mailto:yocto@yoctoproject.org>
Subject: Re: [yocto] Raspberry Pi2 Fails to boot into LXDE.

On 2017-03-10 01:55, Steve Plant wrote:
> OK, I have spent the last day googling my heart out trying to find the Xorg.log file without any luck.
>
>
> The problem is that due to the rpi hanging on boot, the only way I can access the SD card to look for the file is place
> it in a USB SD card reader and use my VirtualBox based Debian to "ls" directores etc.
>
> Having established that there is no file located at /var/log/Xorg.log (there isn't a log directory) but there is a
> symbolic link in the var directory - goes nowhere.
>
>
> After goggling I discovered that the file could also be in the ~/.local/share/xorg/Xorg.0.log, however if I try to look
> there I get "permission denied" and cannot seem to get to the root directory of the card and I can't find a way around
> this as I'm trying to access this directory through the USB card reader.
>
>
> Looked everywhere with no answers, Is there anyone who could help me here??

/var/log is on a volatile file system (i.e. it does not live on the SD card)

If you can get into your board via SSH, you can copy the file and send it

> ------------------------------------------------------------------------------------------------------------------------
> *From:* Khem Raj <raj.khem@gmail.com<mailto:raj.khem@gmail.com>>
> *Sent:* Wednesday, 8 March 2017 5:17 p.m.
> *To:* Steve Plant
> *Cc:* yocto@yoctoproject.org<mailto:yocto@yoctoproject.org>
> *Subject:* Re: [yocto] Raspberry Pi2 Fails to boot into LXDE.
>
> On 17-03-08 12:40:51, Steve Plant wrote:
>> Hi All,
>>
>>
>> Very new to all this linux world, and especially Yocto.
>>
>>
>> I'm working on a embedded project at the moment using a raspberry pi2 board.
>>
>>
>> I have used toaster with Morty 2.2 to compile an image using"rpi-basic-image", to this I have added the following bitbake variables:
>>
>> Bitbake variables
>>
>> DISTRO
>> poky
>> DL_DIR
>> /home/steve/poky/downloads
>> IMAGE_FSTYPES
>> ext3 jffs2 tar.bz2 rpi-sdimg
>> IMAGE_INSTALL_append
>> packagegroup-core-x11-base packagegroup-lxde-base connman
>> PACKAGE_CLASSES
>> package_rpm
>> SSTATE_DIR
>> /home/steve/poky/sstate-cache
>>
>> DISABLE_OVERSCAN
>> 1
>> GPU_MEM_1024
>> 512
>>
>> I have dd'ed the image to an SD card increased the sdb2 partition to the max size and powered up the rpi. Everything looks fine to start with, as it displays the four raspberrys in the top left, then the white "Yocto Project" splash screen complete with small blue dot to the side appears, the progress bar moves across to 100 percent, then the screen turns black with a white
> cursor in the middle and it appears to freeze with only a very dim one second flash of the "act" led.
>>
>>
>> I have then connected the 7" touchscreen and apart from the added multicolored square at the very beginning I get the exact same boot up problem, hangs on the black screen with white cursor (good to see its all resized correctly for the TfT through!!)
>>
>>
>> Before adding the packagegroup-core-x11-base and packagegroup-lxde-base I successfully copied over and ran the rpi-basic-image with no problem, ending up with a usable console.
>>
>>
>> Looking for any help here, I'm thinking I've missed adding a package, or some type of local.conf instruction. any suggestions would be appreciated.............
>
> Can you send the content of /var/log/Xorg.log file ?


--
------------------------------------------------------------
Gary Thomas                 |  Consulting for the
MLB Associates              |    Embedded world
------------------------------------------------------------
--
_______________________________________________
yocto mailing list
yocto@yoctoproject.org<mailto:yocto@yoctoproject.org>
https://lists.yoctoproject.org/listinfo/yocto
yocto Info Page<https://lists.yoctoproject.org/listinfo/yocto>
yocto Info Page<https://lists.yoctoproject.org/listinfo/yocto>
lists.yoctoproject.org
Discussion of all things about the Yocto Project. Read our Community Guidelines or learn more about how to participate in other community discussions.



lists.yoctoproject.org
Discussion of all things about the Yocto Project. Read our Community Guidelines or learn more about how to participate in other community discussions.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20170310/74aab5d4/attachment-0001.html>

------------------------------

Message: 2
Date: Fri, 10 Mar 2017 14:35:02 +0100
From: Kristian Amlie <kristian.amlie@mender.io<mailto:kristian.amlie@mender.io>>
To: Patrick Ohly <patrick.ohly@intel.com<mailto:patrick.ohly@intel.com>>, Eystein M?l?y Stenberg
        <eystein@mender.io<mailto:eystein@mender.io>>
Cc: yocto@yoctoproject.org<mailto:yocto@yoctoproject.org>
Subject: Re: [yocto] update mechanisms
Message-ID: <0135756b-1d20-a743-4f82-8f45becea106@mender.io<mailto:0135756b-1d20-a743-4f82-8f45becea106@mender.io>>
Content-Type: text/plain; charset=utf-8

On 10/03/17 14:02, Patrick Ohly wrote:
> On Wed, 2017-03-01 at 16:35 -0800, Eystein M?l?y Stenberg wrote:
>> On Tue, 2016-12-06 at 10:45 +0100, Patrick Ohly wrote:
>>> On Tue, 2016-12-06 at 10:01 +0100, Stefano Babic wrote:
>>>> Hi Patrick,
>>>>
>>>> On 30/11/2016 15:59, Patrick Ohly wrote:
>>>>> I've started a Wiki page
>>>>> https://wiki.yoctoproject.org/wiki/System_Update - rudimentary at the
>>>>> moment, but might as well be mentioned already now.
>>>>
>>>> I have seen Mariano added an entry for SWUpdate, too, thanks  - I would
>>>> like to edit for better explanation on some parts. Should I try to edit
>>>> directly the page or is it better to discuss it here ?
>>>
>>> Use your own judgment. If its uncontroversial, the feel free to edit the
>>> page directly, otherwise let's discuss it here.
>>>
>>> If feel that putting information directly into the table is too limiting
>>> (it should be brief), then feel free to start a complete section about
>>> SWUpdate.
>>>
>>> I'll do the same for swupd. Editing the sections should be possible
>>> without conflicts, we just have to be more careful about editing the
>>> table concurrently.
>>
>> I updated the Mender part of the wiki now that the stable version Mender
>> 1.0 is released. These changes should not be controversial, but let me
>> know if you disagree. We are planning to keep the Mender section
>> up-to-date as we release new versions, as I think this is what you expect.
>
> Yes, that's useful.
>
>> Are there any plans for next steps or is the wiki the "final state" in
>> terms of integrating OTA updates in Yocto/OE?
>
> My own conclusion is that it is impossible to integrate a specific OTA
> update into Yocto/OE (because there's no single solution that fits all
> requirements) and/or it would be unfair to those solutions that don't
> get such special testing. In that sense the Wiki page is the final
> result of the investigation. Anyone interested in picking a solution can
> go there, consider the pros and cons, and then make a choice.

Makes sense. We can always revisit this at a later point, if one method
starts to emerge as the preferred option for most people.

> However, I see room for some collaborative work that then can happen in
> Yocto/OE:
>       * carrying local system configuration changes across system
>         updates: I find it promising to investigate the "stateless"
>         concept and have started some exploratory work, see
>         https://wiki.yoctoproject.org/wiki/Stateless#Status_and_goals_for_.22stateless.22_in_Yocto (more on that soon)

What's the relation (if any) between this and a read-only rootfs?

Also this may be only vaguely related, but I have it in my queue to
finish the built-in partitioning of rootfs images [1], which will help
divide the filesystem into a stateful and a stateless part. The wic part
is done [2], but ext4 images are not covered yet.

[1] It works by choosing which sub directories of the complete rootfs
you want on each partition.

[2] https://bugzilla.yoctoproject.org/show_bug.cgi?id=10712

>       * supporting UEFI-based machines

Great, this is something we are interested in as well!

--
Kristian


------------------------------

Message: 3
Date: Fri, 10 Mar 2017 15:49:01 +0200
From: Alexander Kanavin <alexander.kanavin@linux.intel.com<mailto:alexander.kanavin@linux.intel.com>>
To: openembedded-architecture@lists.openembedded.org<mailto:openembedded-architecture@lists.openembedded.org>,   Yocto Project
        <yocto@yoctoproject.org<mailto:yocto@yoctoproject.org>>
Subject: [yocto] Proposal: dealing with language-specific build
        tools/dependency management tools
Message-ID: <37d4f98c-9102-f4bf-c6cc-f64e1ffbce40@linux.intel.com<mailto:37d4f98c-9102-f4bf-c6cc-f64e1ffbce40@linux.intel.com>>
Content-Type: text/plain; charset=utf-8; format=flowed

Hello all,

*Introduction*

The new generation of programming languages (think node.js, Go, Rust) is
a poor fit for the Yocto build model which follows the traditional Unix
model. In particular, those new development environments have no problem
with 'grabbing random stuff from the Internet' as a part of development
and build process. However, Yocto has very strict rules about the build
steps and what they can and can not do, and also a strict enforcement of
license and version checks for every component that gets built. Those
two models clash, and this is a proposal of how they could be reconciled.

I'll also send a separate email that talks specifically about MEAN stack
and how it could be supported as Yocto - take it as a specific example
for all of the below.

*Background*

The traditional development model on Unix clearly separates installation
of dependencies needed to develop a project from the development process
itself. Typically, when one wants to build some project, first the
project README needs to be inspected, and any required dependencies
installed system-wide using the distribution package management's tool.
When those dependencies change, usually this manifests itself in a
previously unseen build failure which is again manually resolved by
figuring out the missing dependency and installing it. This can be
awkward, but it's how things have been done for decades, and Yocto's
build system (with separate steps for fetching, unpacking, building,
packaging etc.) is built around the assumption that most software can be
built this way.

Unfortunately, this situation is changing. The new development
environments, such as Go, Rust or node.js see this approach as
cumbersome and getting-in-the-way for developers. They want projects'
setup to be as quick and automatic as possible - and it should also be
cross-platform. So each such environment comes with a specialized tool
which handles installation of dependencies and bypasses the distribution
package management altogether. Typically these dependencies are fetched
from the Internet and installed into the project tree. The details are
hidden; it's assumed that developers don't want to know or care. In
particular, specific versions of dependencies can be only weakly
specified or ignored altogether (that is, the latest commit is always
fetched), licensing is totally overlooked, a list of what was installed
cannot be trivially obtained, and repeating the procedure the next day
may result in a different set of code being pulled in, because someone
somewhere added a commit to their github repo.

This does not work well in Yocto context. Yocto project prides itself on
being specific and exact about what gets build, how it gets built and
what license is attached to each component. So we need to somehow
enforce that with the new model, and avoid the situation where separate,
incompatible, and difficult to grasp solutions are developed for each
language environment.

*Design considerations*

1. I would like recipes to remain short and sweet and clear. In
particular, node.js projects can pull in hundreds of dependencies; I
want to keep their metadata out of the recipe and somewhere else, for
readability, clarity, and maintainability.

2. I don't want to implement custom fetchers, or otherwise re-implement
(poorly) those language-specific build and dependency management tools.
Let's use npm, cargo and go as much as we possibly can and let them do
their job - yes, that also includes them fetching things from the
internet for us.

3. When things need to be updated to a new version, manual editing of
metadata should be avoided: when there are hundreds of dependencies, a
tool should modify the metadata, and human should only inspect the changes.

*How do we deal with this?*

By introducing a lockdown file that lives next to the recipe. The
concept is already implemented in npm, but needs to be made generic and
come with a common API that is using the file to verify the build.

*What is a lockdown file?*

The file captures all of the recipe dependencies that are pulled in by
the build tool. For each such dependency the following information is
provided (this is really similar to what is in recipes, and that is on
purpose:

- name
- description (optional)
- verification data (this is specific to each language, but can be
version, git commit id, a checksum and so on). The only requirement is
that it maps to a unique set of code.
- license string
- license file path
- license checksum

*How is the lockdown file used?*

1. It needs to be generated in the first place when adding a new recipe.
For example:

bitbake -c generate_lockdown recipe

would fetch and unpack the recipe code, then run npm/cargo/go to pull in
the dependencies, then walk the project tree and generate the lockdown
metadata. Sometimes the tools can help here somewhat, but other times
they can be used only for fetching, and verification data has to be
figured out by inspecting the tree with our custom-written code. This is
the hard part that we have to deal with.

2. It can be used to perform a 'loose' build of the recipe that does not
guarantee reproducibility.

We have to accept this: some projects just don't care about it, and
offer no support to those who want reproducibility. We should at least
provide a way to build such projects in Yocto. The information in
lockdown file is not enforced; it's merely compared against the actual
build and any differences presented to the user as warnings. This is a
recipe setting.

3. It can also be used to perform a 'strict' build of the recipe that
enforces what is in the lockdown file.

The information in the lockdown file is given to the language-specific
tool to help it fetch the right things (whenever the tool makes it
possible), and then is used to compare to what was fetched, but this
time any mismatches stop the build. Exactly how this happens is specific
to each language, and again, it is the hard bit that we need to deal with.

4. When a recipe is updated to a new version, the lockdown file needs to
be updated as well.

One possibility is to generate a new lockdown file (as in point 1), and
then a human can compare that against the old lockdown file.

bitbake -c update_lockdown recipe

5. Packaging

Go by default is compiling everything into a static executable, so there
are no separate packages. All dependencies' licenses should be rolled
into the package: lockdown file tells what they are and where they are
in the build tree.

Other environments do install the dependencies somewhere in the system,
so those should be packaged separately: lockdown file is used to get a
list of them and attach licenses to them. Installation paths (things
that FILES_ is set to) should typically be easy to figure out from
dependency names.

*Conclusion*

This is only a preliminary idea: I understand that the devil is in the
details, and there are plenty of details where things may not work out
as planned, or there's something else I didn't think of that should be
accounted for. So flame away!



------------------------------

--
_______________________________________________
yocto mailing list
yocto@yoctoproject.org<mailto:yocto@yoctoproject.org>
https://lists.yoctoproject.org/listinfo/yocto


End of yocto Digest, Vol 78, Issue 45
*************************************

[-- Attachment #2: Type: text/html, Size: 31343 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2017-03-10 14:25 ` help Suneetha Lakshmi G
@ 2017-03-10 14:28   ` Robert P. J. Day
  2017-03-10 14:39   ` help Schmitt, Richard
  2017-03-10 18:15   ` help Khem Raj
  2 siblings, 0 replies; 278+ messages in thread
From: Robert P. J. Day @ 2017-03-10 14:28 UTC (permalink / raw)
  To: Suneetha Lakshmi G; +Cc: yocto

On Fri, 10 Mar 2017, Suneetha Lakshmi G wrote:

> Hi All,
>
> Im new to yocto and trying to build for my customer device im facing
> this issue.

  first advice is to use meaningful subject lines ... simply yelling
"help" is a good way to get people to not take you seriously right
from the beginning.

rday

-- 

========================================================================
Robert P. J. Day                                 Ottawa, Ontario, CANADA
                        http://crashcourse.ca

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================



^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
       [not found] <mailman.63189.1489153806.15860.yocto@yoctoproject.org>
@ 2017-03-10 14:25 ` Suneetha Lakshmi G
  2017-03-10 14:28   ` help Robert P. J. Day
                     ` (2 more replies)
  0 siblings, 3 replies; 278+ messages in thread
From: Suneetha Lakshmi G @ 2017-03-10 14:25 UTC (permalink / raw)
  To: yocto

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

Hi All,


Im new to yocto and trying to build for my customer device im facing this issue.


| arm-linux-gnueabi-xgcc: error: unrecognized command line option '-mgeneral-regs-only'
| arm-linux-gnueabi-xgcc: error: unrecognized command line option '-mcmodel=large'
| make: *** [opkg-compare-versions] Error 1
| ERROR: oe_runmake failed

Please guide how to progress further.

Regards,
Suneetha




________________________________
From: yocto-bounces@yoctoproject.org <yocto-bounces@yoctoproject.org> on behalf of yocto-request@yoctoproject.org <yocto-request@yoctoproject.org>
Sent: Friday, March 10, 2017 7:20 PM
To: yocto@yoctoproject.org
Subject: yocto Digest, Vol 78, Issue 45

Send yocto mailing list submissions to
        yocto@yoctoproject.org

To subscribe or unsubscribe via the World Wide Web, visit
        https://lists.yoctoproject.org/listinfo/yocto
or, via email, send a message with subject or body 'help' to
        yocto-request@yoctoproject.org

You can reach the person managing the list at
        yocto-owner@yoctoproject.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of yocto digest..."


Today's Topics:

   1. Re: Raspberry Pi2 Fails to boot into LXDE. (Steve Plant)
   2. Re: update mechanisms (Kristian Amlie)
   3. Proposal: dealing with language-specific build
      tools/dependency management tools (Alexander Kanavin)


----------------------------------------------------------------------

Message: 1
Date: Fri, 10 Mar 2017 13:31:40 +0000
From: Steve Plant <steove@hotmail.com>
To: Gary Thomas <gary@mlbassoc.com>
Cc: "yocto@yoctoproject.org" <yocto@yoctoproject.org>
Subject: Re: [yocto] Raspberry Pi2 Fails to boot into LXDE.
Message-ID:
        <SG2PR0301MB20164F99A2AF83AFC01ECDCFD1200@SG2PR0301MB2016.apcprd03.prod.outlook.com>

Content-Type: text/plain; charset="iso-8859-1"

Thanks Gary,


You where spot on! I have now been able to SSH into the rpi and have posted the Xorg.log file to the mailing list.


I think Xorg is failing to load correctly because it cannot find the evdev module. Looking into how to fix this now......


Regards, Steve.


________________________________
From: yocto-bounces@yoctoproject.org <yocto-bounces@yoctoproject.org> on behalf of Gary Thomas <gary@mlbassoc.com>
Sent: Friday, 10 March 2017 5:42 a.m.
To: yocto@yoctoproject.org
Subject: Re: [yocto] Raspberry Pi2 Fails to boot into LXDE.

On 2017-03-10 01:55, Steve Plant wrote:
> OK, I have spent the last day googling my heart out trying to find the Xorg.log file without any luck.
>
>
> The problem is that due to the rpi hanging on boot, the only way I can access the SD card to look for the file is place
> it in a USB SD card reader and use my VirtualBox based Debian to "ls" directores etc.
>
> Having established that there is no file located at /var/log/Xorg.log (there isn't a log directory) but there is a
> symbolic link in the var directory - goes nowhere.
>
>
> After goggling I discovered that the file could also be in the ~/.local/share/xorg/Xorg.0.log, however if I try to look
> there I get "permission denied" and cannot seem to get to the root directory of the card and I can't find a way around
> this as I'm trying to access this directory through the USB card reader.
>
>
> Looked everywhere with no answers, Is there anyone who could help me here??

/var/log is on a volatile file system (i.e. it does not live on the SD card)

If you can get into your board via SSH, you can copy the file and send it

> ------------------------------------------------------------------------------------------------------------------------
> *From:* Khem Raj <raj.khem@gmail.com>
> *Sent:* Wednesday, 8 March 2017 5:17 p.m.
> *To:* Steve Plant
> *Cc:* yocto@yoctoproject.org
> *Subject:* Re: [yocto] Raspberry Pi2 Fails to boot into LXDE.
>
> On 17-03-08 12:40:51, Steve Plant wrote:
>> Hi All,
>>
>>
>> Very new to all this linux world, and especially Yocto.
>>
>>
>> I'm working on a embedded project at the moment using a raspberry pi2 board.
>>
>>
>> I have used toaster with Morty 2.2 to compile an image using"rpi-basic-image", to this I have added the following bitbake variables:
>>
>> Bitbake variables
>>
>> DISTRO
>> poky
>> DL_DIR
>> /home/steve/poky/downloads
>> IMAGE_FSTYPES
>> ext3 jffs2 tar.bz2 rpi-sdimg
>> IMAGE_INSTALL_append
>> packagegroup-core-x11-base packagegroup-lxde-base connman
>> PACKAGE_CLASSES
>> package_rpm
>> SSTATE_DIR
>> /home/steve/poky/sstate-cache
>>
>> DISABLE_OVERSCAN
>> 1
>> GPU_MEM_1024
>> 512
>>
>> I have dd'ed the image to an SD card increased the sdb2 partition to the max size and powered up the rpi. Everything looks fine to start with, as it displays the four raspberrys in the top left, then the white "Yocto Project" splash screen complete with small blue dot to the side appears, the progress bar moves across to 100 percent, then the screen turns black with a white
> cursor in the middle and it appears to freeze with only a very dim one second flash of the "act" led.
>>
>>
>> I have then connected the 7" touchscreen and apart from the added multicolored square at the very beginning I get the exact same boot up problem, hangs on the black screen with white cursor (good to see its all resized correctly for the TfT through!!)
>>
>>
>> Before adding the packagegroup-core-x11-base and packagegroup-lxde-base I successfully copied over and ran the rpi-basic-image with no problem, ending up with a usable console.
>>
>>
>> Looking for any help here, I'm thinking I've missed adding a package, or some type of local.conf instruction. any suggestions would be appreciated.............
>
> Can you send the content of /var/log/Xorg.log file ?


--
------------------------------------------------------------
Gary Thomas                 |  Consulting for the
MLB Associates              |    Embedded world
------------------------------------------------------------
--
_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto
yocto Info Page<https://lists.yoctoproject.org/listinfo/yocto>
yocto Info Page<https://lists.yoctoproject.org/listinfo/yocto>
lists.yoctoproject.org
Discussion of all things about the Yocto Project. Read our Community Guidelines or learn more about how to participate in other community discussions.



lists.yoctoproject.org
Discussion of all things about the Yocto Project. Read our Community Guidelines or learn more about how to participate in other community discussions.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20170310/74aab5d4/attachment-0001.html>

------------------------------

Message: 2
Date: Fri, 10 Mar 2017 14:35:02 +0100
From: Kristian Amlie <kristian.amlie@mender.io>
To: Patrick Ohly <patrick.ohly@intel.com>, Eystein M?l?y Stenberg
        <eystein@mender.io>
Cc: yocto@yoctoproject.org
Subject: Re: [yocto] update mechanisms
Message-ID: <0135756b-1d20-a743-4f82-8f45becea106@mender.io>
Content-Type: text/plain; charset=utf-8

On 10/03/17 14:02, Patrick Ohly wrote:
> On Wed, 2017-03-01 at 16:35 -0800, Eystein M?l?y Stenberg wrote:
>> On Tue, 2016-12-06 at 10:45 +0100, Patrick Ohly wrote:
>>> On Tue, 2016-12-06 at 10:01 +0100, Stefano Babic wrote:
>>>> Hi Patrick,
>>>>
>>>> On 30/11/2016 15:59, Patrick Ohly wrote:
>>>>> I've started a Wiki page
>>>>> https://wiki.yoctoproject.org/wiki/System_Update - rudimentary at the
>>>>> moment, but might as well be mentioned already now.
>>>>
>>>> I have seen Mariano added an entry for SWUpdate, too, thanks  - I would
>>>> like to edit for better explanation on some parts. Should I try to edit
>>>> directly the page or is it better to discuss it here ?
>>>
>>> Use your own judgment. If its uncontroversial, the feel free to edit the
>>> page directly, otherwise let's discuss it here.
>>>
>>> If feel that putting information directly into the table is too limiting
>>> (it should be brief), then feel free to start a complete section about
>>> SWUpdate.
>>>
>>> I'll do the same for swupd. Editing the sections should be possible
>>> without conflicts, we just have to be more careful about editing the
>>> table concurrently.
>>
>> I updated the Mender part of the wiki now that the stable version Mender
>> 1.0 is released. These changes should not be controversial, but let me
>> know if you disagree. We are planning to keep the Mender section
>> up-to-date as we release new versions, as I think this is what you expect.
>
> Yes, that's useful.
>
>> Are there any plans for next steps or is the wiki the "final state" in
>> terms of integrating OTA updates in Yocto/OE?
>
> My own conclusion is that it is impossible to integrate a specific OTA
> update into Yocto/OE (because there's no single solution that fits all
> requirements) and/or it would be unfair to those solutions that don't
> get such special testing. In that sense the Wiki page is the final
> result of the investigation. Anyone interested in picking a solution can
> go there, consider the pros and cons, and then make a choice.

Makes sense. We can always revisit this at a later point, if one method
starts to emerge as the preferred option for most people.

> However, I see room for some collaborative work that then can happen in
> Yocto/OE:
>       * carrying local system configuration changes across system
>         updates: I find it promising to investigate the "stateless"
>         concept and have started some exploratory work, see
>         https://wiki.yoctoproject.org/wiki/Stateless#Status_and_goals_for_.22stateless.22_in_Yocto (more on that soon)

What's the relation (if any) between this and a read-only rootfs?

Also this may be only vaguely related, but I have it in my queue to
finish the built-in partitioning of rootfs images [1], which will help
divide the filesystem into a stateful and a stateless part. The wic part
is done [2], but ext4 images are not covered yet.

[1] It works by choosing which sub directories of the complete rootfs
you want on each partition.

[2] https://bugzilla.yoctoproject.org/show_bug.cgi?id=10712

>       * supporting UEFI-based machines

Great, this is something we are interested in as well!

--
Kristian


------------------------------

Message: 3
Date: Fri, 10 Mar 2017 15:49:01 +0200
From: Alexander Kanavin <alexander.kanavin@linux.intel.com>
To: openembedded-architecture@lists.openembedded.org,   Yocto Project
        <yocto@yoctoproject.org>
Subject: [yocto] Proposal: dealing with language-specific build
        tools/dependency management tools
Message-ID: <37d4f98c-9102-f4bf-c6cc-f64e1ffbce40@linux.intel.com>
Content-Type: text/plain; charset=utf-8; format=flowed

Hello all,

*Introduction*

The new generation of programming languages (think node.js, Go, Rust) is
a poor fit for the Yocto build model which follows the traditional Unix
model. In particular, those new development environments have no problem
with 'grabbing random stuff from the Internet' as a part of development
and build process. However, Yocto has very strict rules about the build
steps and what they can and can not do, and also a strict enforcement of
license and version checks for every component that gets built. Those
two models clash, and this is a proposal of how they could be reconciled.

I'll also send a separate email that talks specifically about MEAN stack
and how it could be supported as Yocto - take it as a specific example
for all of the below.

*Background*

The traditional development model on Unix clearly separates installation
of dependencies needed to develop a project from the development process
itself. Typically, when one wants to build some project, first the
project README needs to be inspected, and any required dependencies
installed system-wide using the distribution package management's tool.
When those dependencies change, usually this manifests itself in a
previously unseen build failure which is again manually resolved by
figuring out the missing dependency and installing it. This can be
awkward, but it's how things have been done for decades, and Yocto's
build system (with separate steps for fetching, unpacking, building,
packaging etc.) is built around the assumption that most software can be
built this way.

Unfortunately, this situation is changing. The new development
environments, such as Go, Rust or node.js see this approach as
cumbersome and getting-in-the-way for developers. They want projects'
setup to be as quick and automatic as possible - and it should also be
cross-platform. So each such environment comes with a specialized tool
which handles installation of dependencies and bypasses the distribution
package management altogether. Typically these dependencies are fetched
from the Internet and installed into the project tree. The details are
hidden; it's assumed that developers don't want to know or care. In
particular, specific versions of dependencies can be only weakly
specified or ignored altogether (that is, the latest commit is always
fetched), licensing is totally overlooked, a list of what was installed
cannot be trivially obtained, and repeating the procedure the next day
may result in a different set of code being pulled in, because someone
somewhere added a commit to their github repo.

This does not work well in Yocto context. Yocto project prides itself on
being specific and exact about what gets build, how it gets built and
what license is attached to each component. So we need to somehow
enforce that with the new model, and avoid the situation where separate,
incompatible, and difficult to grasp solutions are developed for each
language environment.

*Design considerations*

1. I would like recipes to remain short and sweet and clear. In
particular, node.js projects can pull in hundreds of dependencies; I
want to keep their metadata out of the recipe and somewhere else, for
readability, clarity, and maintainability.

2. I don't want to implement custom fetchers, or otherwise re-implement
(poorly) those language-specific build and dependency management tools.
Let's use npm, cargo and go as much as we possibly can and let them do
their job - yes, that also includes them fetching things from the
internet for us.

3. When things need to be updated to a new version, manual editing of
metadata should be avoided: when there are hundreds of dependencies, a
tool should modify the metadata, and human should only inspect the changes.

*How do we deal with this?*

By introducing a lockdown file that lives next to the recipe. The
concept is already implemented in npm, but needs to be made generic and
come with a common API that is using the file to verify the build.

*What is a lockdown file?*

The file captures all of the recipe dependencies that are pulled in by
the build tool. For each such dependency the following information is
provided (this is really similar to what is in recipes, and that is on
purpose:

- name
- description (optional)
- verification data (this is specific to each language, but can be
version, git commit id, a checksum and so on). The only requirement is
that it maps to a unique set of code.
- license string
- license file path
- license checksum

*How is the lockdown file used?*

1. It needs to be generated in the first place when adding a new recipe.
For example:

bitbake -c generate_lockdown recipe

would fetch and unpack the recipe code, then run npm/cargo/go to pull in
the dependencies, then walk the project tree and generate the lockdown
metadata. Sometimes the tools can help here somewhat, but other times
they can be used only for fetching, and verification data has to be
figured out by inspecting the tree with our custom-written code. This is
the hard part that we have to deal with.

2. It can be used to perform a 'loose' build of the recipe that does not
guarantee reproducibility.

We have to accept this: some projects just don't care about it, and
offer no support to those who want reproducibility. We should at least
provide a way to build such projects in Yocto. The information in
lockdown file is not enforced; it's merely compared against the actual
build and any differences presented to the user as warnings. This is a
recipe setting.

3. It can also be used to perform a 'strict' build of the recipe that
enforces what is in the lockdown file.

The information in the lockdown file is given to the language-specific
tool to help it fetch the right things (whenever the tool makes it
possible), and then is used to compare to what was fetched, but this
time any mismatches stop the build. Exactly how this happens is specific
to each language, and again, it is the hard bit that we need to deal with.

4. When a recipe is updated to a new version, the lockdown file needs to
be updated as well.

One possibility is to generate a new lockdown file (as in point 1), and
then a human can compare that against the old lockdown file.

bitbake -c update_lockdown recipe

5. Packaging

Go by default is compiling everything into a static executable, so there
are no separate packages. All dependencies' licenses should be rolled
into the package: lockdown file tells what they are and where they are
in the build tree.

Other environments do install the dependencies somewhere in the system,
so those should be packaged separately: lockdown file is used to get a
list of them and attach licenses to them. Installation paths (things
that FILES_ is set to) should typically be easy to figure out from
dependency names.

*Conclusion*

This is only a preliminary idea: I understand that the devil is in the
details, and there are plenty of details where things may not work out
as planned, or there's something else I didn't think of that should be
accounted for. So flame away!



------------------------------

--
_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto


End of yocto Digest, Vol 78, Issue 45
*************************************

[-- Attachment #2: Type: text/html, Size: 25342 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2017-01-28 16:59 Micah Crochet
  0 siblings, 0 replies; 278+ messages in thread
From: Micah Crochet @ 2017-01-28 16:59 UTC (permalink / raw)


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





MICAH J. CROCHET

INSTRUMENTAL MUSIC INSTRUCTOR
micahcrochet@cccneb.edu<mailto:micahcrochet@cccneb.edu> |



[cid:image8866a7.PNG@482b7df2.4ab65159]

www.cccneb.edu<http://www.cccneb.edu>

 | PO BOX 1027 | ,
TOLL FREE 1.877.222.0780



Central Community College maximizes student and community success.


[-- Attachment #2: image8866a7.PNG --]
[-- Type: image/png, Size: 14893 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2017-01-17 17:35 Jay Miller
  0 siblings, 0 replies; 278+ messages in thread
From: Jay Miller @ 2017-01-17 17:35 UTC (permalink / raw)
  To: dev


-- 
Jay Miller | Software Manager | Mobile: +1.781.258.7446
Oracle Communications Global Business Unit
100 Crosby Drive | Bedford, MA 01730

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2016-08-19 13:11 help jayachandran.subramanian
  2016-08-19 18:09 ` help Stephen Hemminger
@ 2016-08-20  0:26 ` harshavardhan Reddy
  1 sibling, 0 replies; 278+ messages in thread
From: harshavardhan Reddy @ 2016-08-20  0:26 UTC (permalink / raw)
  To: jayachandran.subramanian; +Cc: dev

Hi Jay,

You can refer the below sample applications from the doc.

23. Multi-process Sample Application
<http://dpdk.org/doc/guides/sample_app_ug/multi_process.html>
35. Distributor Sample Application
<http://dpdk.org/doc/guides/sample_app_ug/dist_app.html>

 you can also enable multi queue with symmetric hash at PMD level.
check this *rte_eth_conf  structure and  **rxmode options.*

*Regards,*
*Hvr*

On Fri, Aug 19, 2016 at 6:41 PM, <jayachandran.subramanian@wipro.com> wrote:

> Hi ,
>
> I needs to enable SMP(symmetrical multiprocessing) in DPDK PMD NIC Port .
>
> Please let me know the command to get the same
>
> Thanks
> jayachandran
> The information contained in this electronic message and any attachments
> to this message are intended for the exclusive use of the addressee(s) and
> may contain proprietary, confidential or privileged information. If you are
> not the intended recipient, you should not disseminate, distribute or copy
> this e-mail. Please notify the sender immediately and destroy all copies of
> this message and any attachments. WARNING: Computer viruses can be
> transmitted via email. The recipient should check this email and any
> attachments for the presence of viruses. The company accepts no liability
> for any damage caused by any virus transmitted by this email.
> www.wipro.com
>

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2016-08-19 18:09 ` help Stephen Hemminger
@ 2016-08-19 18:36   ` Wiles, Keith
  0 siblings, 0 replies; 278+ messages in thread
From: Wiles, Keith @ 2016-08-19 18:36 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: jayachandran.subramanian, dev


Regards,
Keith

> On Aug 19, 2016, at 1:09 PM, Stephen Hemminger <stephen@networkplumber.org> wrote:
> 
> On Fri, 19 Aug 2016 13:11:48 +0000
> <jayachandran.subramanian@wipro.com> wrote:
> 
>> Hi ,
>> 
>> I needs to enable SMP(symmetrical multiprocessing) in DPDK PMD NIC Port .
>> 
>> Please let me know the command to get the same
>> 
>> Thanks
>> jayachandran
>> The information contained in this electronic message and any attachments to this message are intended for the exclusive use of the addressee(s) and may contain proprietary, confidential or privileged information. If you are not the intended recipient, you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately and destroy all copies of this message and any attachments. WARNING: Computer viruses can be transmitted via email. The recipient should check this email and any attachments for the presence of viruses. The company accepts no liability for any damage caused by any virus transmitted by this email. www.wipro.com
> 
> Thanks for your interest. Please direct all user questions to the DPDK user mailing list users@dpdk.org.
> 
> The DPDK is inherently SMP, read the documentation about how lcore's are setup.

Here is a good link to read the DPDK docs https://readthedocs.org/projects/dpdk/ <https://readthedocs.org/projects/dpdk/>

> 
> Also don't add corporate signature's like this on open mailing lists.
> Because of the proprietary label, the email would be ignored by many users.
> 

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2016-08-19 13:11 help jayachandran.subramanian
@ 2016-08-19 18:09 ` Stephen Hemminger
  2016-08-19 18:36   ` help Wiles, Keith
  2016-08-20  0:26 ` help harshavardhan Reddy
  1 sibling, 1 reply; 278+ messages in thread
From: Stephen Hemminger @ 2016-08-19 18:09 UTC (permalink / raw)
  To: jayachandran.subramanian; +Cc: dev

On Fri, 19 Aug 2016 13:11:48 +0000
<jayachandran.subramanian@wipro.com> wrote:

> Hi ,
> 
> I needs to enable SMP(symmetrical multiprocessing) in DPDK PMD NIC Port .
> 
> Please let me know the command to get the same
> 
> Thanks
> jayachandran
> The information contained in this electronic message and any attachments to this message are intended for the exclusive use of the addressee(s) and may contain proprietary, confidential or privileged information. If you are not the intended recipient, you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately and destroy all copies of this message and any attachments. WARNING: Computer viruses can be transmitted via email. The recipient should check this email and any attachments for the presence of viruses. The company accepts no liability for any damage caused by any virus transmitted by this email. www.wipro.com

Thanks for your interest. Please direct all user questions to the DPDK user mailing list users@dpdk.org.

The DPDK is inherently SMP, read the documentation about how lcore's are setup.

Also don't add corporate signature's like this on open mailing lists.
Because of the proprietary label, the email would be ignored by many users.

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2016-08-19 13:11 jayachandran.subramanian
  2016-08-19 18:09 ` help Stephen Hemminger
  2016-08-20  0:26 ` help harshavardhan Reddy
  0 siblings, 2 replies; 278+ messages in thread
From: jayachandran.subramanian @ 2016-08-19 13:11 UTC (permalink / raw)
  To: dev

Hi ,

I needs to enable SMP(symmetrical multiprocessing) in DPDK PMD NIC Port .

Please let me know the command to get the same

Thanks
jayachandran
The information contained in this electronic message and any attachments to this message are intended for the exclusive use of the addressee(s) and may contain proprietary, confidential or privileged information. If you are not the intended recipient, you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately and destroy all copies of this message and any attachments. WARNING: Computer viruses can be transmitted via email. The recipient should check this email and any attachments for the presence of viruses. The company accepts no liability for any damage caused by any virus transmitted by this email. www.wipro.com

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2016-05-13  9:26 ` help Burton, Ross
@ 2016-05-13  9:30   ` Herman van Hazendonk
  0 siblings, 0 replies; 278+ messages in thread
From: Herman van Hazendonk @ 2016-05-13  9:30 UTC (permalink / raw)
  To: Burton, Ross; +Cc: yocto, Chandrakanth Sherkhane (IC Nexus)

Alternatively when you are using meta-qt5 layer, you could use something 
like Maliit input framework (which is used by various distributions 
(Jolla/Sailfish/Ubuntu/LuneOS) as well).

https://github.com/meta-qt5/meta-qt5/tree/master/recipes-qt/maliit

Herrie

On 2016-05-13 11:26, Burton, Ross wrote:
> On 13 May 2016 at 08:25, Chandrakanth Sherkhane (IC Nexus)
> <chan@icnexus.com.tw> wrote:
> 
>> Could anyone help to provide more details for,
>> 
>> 1. Yocto Virtual Keyboard in French language - is it available now?
>> 
>> 2. If not available, when will it be available?
>> 
>> 3. Is the Yocto Virtual Keyboard available in any other languages?
> 
> There's no such thing as the Yocto Virtual Keyboard.  I presume you
> mean matchbox-keyboard.  Looking at the sources:
> 
> $ ls layouts/*xml
> layouts/keyboard-dvorak.xml    layouts/keyboard-fi.xml
> layouts/keyboard-ru.xml  layouts/keyboard.xml
> layouts/keyboard-extended.xml  layouts/keyboard-numpad.xml
> layouts/keyboard-us.xml
> 
> There's no French layout, but these should provide plenty of examples
> as to how to build it yourself.  If you implement the layout, please
> consider sending the patch so everyone else can use it.
> 
> Ross



^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2016-05-13  7:25 help Chandrakanth Sherkhane (IC Nexus)
  2016-05-13  7:34 ` help Chris Z.
@ 2016-05-13  9:26 ` Burton, Ross
  2016-05-13  9:30   ` help Herman van Hazendonk
  1 sibling, 1 reply; 278+ messages in thread
From: Burton, Ross @ 2016-05-13  9:26 UTC (permalink / raw)
  To: Chandrakanth Sherkhane (IC Nexus); +Cc: yocto

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

On 13 May 2016 at 08:25, Chandrakanth Sherkhane (IC Nexus) <
chan@icnexus.com.tw> wrote:

> Could anyone help to provide more details for,
>
> 1. Yocto Virtual Keyboard in French language - is it available now?
>
> 2. If not available, when will it be available?
>
> 3. Is the Yocto Virtual Keyboard available in any other languages?
>

There's no such thing as the Yocto Virtual Keyboard.  I presume you mean
matchbox-keyboard.  Looking at the sources:

$ ls layouts/*xml
layouts/keyboard-dvorak.xml    layouts/keyboard-fi.xml
 layouts/keyboard-ru.xml  layouts/keyboard.xml
layouts/keyboard-extended.xml  layouts/keyboard-numpad.xml
 layouts/keyboard-us.xml

There's no French layout, but these should provide plenty of examples as to
how to build it yourself.  If you implement the layout, please consider
sending the patch so everyone else can use it.

Ross

[-- Attachment #2: Type: text/html, Size: 1903 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2016-05-13  7:25 help Chandrakanth Sherkhane (IC Nexus)
@ 2016-05-13  7:34 ` Chris Z.
  2016-05-13  9:26 ` help Burton, Ross
  1 sibling, 0 replies; 278+ messages in thread
From: Chris Z. @ 2016-05-13  7:34 UTC (permalink / raw)
  To: Chandrakanth Sherkhane (IC Nexus); +Cc: yocto


[-- Attachment #1.1: Type: text/plain, Size: 1120 bytes --]

​

On Fri, May 13, 2016 at 9:25 AM, Chandrakanth Sherkhane (IC Nexus) <
chan@icnexus.com.tw> wrote:

> Dear Yocto mailing list,
>
>
>
> We are IC Nexus Co. Ltd. in Taipei City – Taiwan, a developer and
> manufacturer of ARM-based Embedded Single Board Computers and Smart LCD
> Display products (on Android / Linux / Yocto Project). We are currently
> selling our products with Yocto O.S. to our worldwide customers.
>
>
>
> Could anyone help to provide more details for,
>
> 1. Yocto Virtual Keyboard in French language - is it available now?
>
> 2. If not available, when will it be available?
>
> 3. Is the Yocto Virtual Keyboard available in any other languages?
>
>
>
> We will appreciate your quick reply - Thank you very much!
>
>
>
> Kind Regards,
>
> Chandrakanth Sherkhane
>
> IC Nexus Co. Ltd.
>
> Tel: +886-2-2789-1200 ext. 114
>
> Email: chan@icnexus.com.tw
>
> Web: http://www.icnexus.com.tw
>
>
>
> --
> _______________________________________________
> yocto mailing list
> yocto@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto
>
>

[-- Attachment #1.2: Type: text/html, Size: 3902 bytes --]

[-- Attachment #2: shame.jpg --]
[-- Type: image/jpeg, Size: 44075 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2016-05-13  7:25 Chandrakanth Sherkhane (IC Nexus)
  2016-05-13  7:34 ` help Chris Z.
  2016-05-13  9:26 ` help Burton, Ross
  0 siblings, 2 replies; 278+ messages in thread
From: Chandrakanth Sherkhane (IC Nexus) @ 2016-05-13  7:25 UTC (permalink / raw)
  To: yocto

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

Dear Yocto mailing list,

 

We are IC Nexus Co. Ltd. in Taipei City - Taiwan, a developer and
manufacturer of ARM-based Embedded Single Board Computers and Smart LCD
Display products (on Android / Linux / Yocto Project). We are currently
selling our products with Yocto O.S. to our worldwide customers.

 

Could anyone help to provide more details for,

1. Yocto Virtual Keyboard in French language - is it available now?

2. If not available, when will it be available?

3. Is the Yocto Virtual Keyboard available in any other languages?

 

We will appreciate your quick reply - Thank you very much!

 

Kind Regards,

Chandrakanth Sherkhane

IC Nexus Co. Ltd.

Tel: +886-2-2789-1200 ext. 114

Email: chan@icnexus.com.tw

Web: http://www.icnexus.com.tw

 


[-- Attachment #2: Type: text/html, Size: 4634 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2016-03-23 10:23 Marwa Hamza
  0 siblings, 0 replies; 278+ messages in thread
From: Marwa Hamza @ 2016-03-23 10:23 UTC (permalink / raw)
  To: xen-devel


[-- Attachment #1.1: Type: text/plain, Size: 971 bytes --]

ello
i'm trying to learn more about xen hypervisor .. i install xen in my host
with alpine as domu
and now i'm trying to build xen from source with linux dom0 for an arm
board .. i have a little bit confusion about building xen from the source
here's what i did
i build xen from the source
git clone git://xenbits.xen.org/xen.git

make dist-xen XEN_TARGET_ARCH=arm32 CROSS_COMPILE=arm-linux-gnueabihf-
CONFIG_EARLY_PRINTK=omap5432

then i download the linux kernel from
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

i configured and compiled successfully

i have in my sd card the u-boot.img and MLO and zimage xenuimage and the
file system ubuntu .. it worked fine after some problems .. now i'm trynig
to install linux as domu ..

when i wrote xl list ..the output is no command found ... it looks like i
need to install xen but i don't know how .. i'm really confused . where
should i install it and how
does any body can help me
Regards

[-- Attachment #1.2: Type: text/html, Size: 7780 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2016-03-15 21:01                   ` help Safa Hamza
@ 2016-03-15 23:47                     ` Doug Goldstein
  0 siblings, 0 replies; 278+ messages in thread
From: Doug Goldstein @ 2016-03-15 23:47 UTC (permalink / raw)
  To: Safa Hamza, Wei Liu; +Cc: Xen-devel


[-- Attachment #1.1.1: Type: text/plain, Size: 2827 bytes --]

On 3/15/16 4:01 PM, Safa Hamza wrote:
> i solve the problem by degugging the linux kernel .. the problem was the
> instruction omap_smc1 ..i'm not sure about what it did but when i delete
> this instruction it works ... but i face another problem .. the execution
> now stops in

<snip>

> [    2.610379] VFS: Mounted root (ext4 filesystem) on device 179:2.
> [    2.623192] devtmpfs: mounted
> [    2.623584] Freeing unused kernel memory: 340K (c079e000 - c07f3000)
> INIT: version 2.88 booting
> Starting udev
> [    3.169771] udev[871]: starting version 164
> [    5.205065] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some
> data may be corrupt. Please run fsck.
> [    5.400187] EXT4-fs (mmcblk1p4): recovery complete
> [    5.400309] EXT4-fs (mmcblk1p4): mounted filesystem with ordered data
> mode. Opts: (null)
> [    5.492162] random: nonblocking pool is initialized
> ERROR: could not open directory
> /lib/modules/3.15.0-rc2-00199-g0c0a3e5-dirty: No such file or directory
> WARNING: -e needs -E or -F
> ERROR: could not open directory
> /lib/modules/3.15.0-rc2-00199-g0c0a3e5-dirty: No such file or directory
> FATAL: could not search modules: No such file or directory
> Starting Bootlog daemon: bootlogd: cannot allocate pseudo tty: No such file
> or directory
> bootlogd.
> [    5.831227] EXT4-fs (mmcblk0p2): re-mounted. Opts: data=ordered
> ALSA: Restoring mixer settings...
> Configuring network interfaces... /usr/sbin/alsactl: load_state:1686: No
> soundcards found...
> ifconfig: SIOCGIFFLAGS: No such device
> done.
> hwclock: can't open '/dev/misc/rtc': No such file or directory
> Mon Jul  1 15:13:00 UTC 2013
> hwclock: can't open '/dev/misc/rtc': No such file or directory
> INIT: Entering runlevel: 5
> Starting telnet daemon.
> hwclock: can't open '/dev/misc/rtc': No such file or directory
> Starting syslogd/klogd: done
> Starting thttpd.
> Stopping Bootlog daemon: bootlogd.
> 
> ***************************************************************************************************************************************************
>  no console appears .. i guess the problem in the file system ... but this
> file works fine with the linux kernel in omap5 without  the xen hypervisor
> 
> should i make any changement in the rootfs so it can works with xen
> hypervisor !! or any other solution !!
> Regards
> 

The issue is likely that you don't have a getty setup on /dev/hvc0. Edit
your /etc/inittab and add one. Maybe something like:

h0:2345:respawn:/sbin/agetty 38400 hvc0 linux

But honestly there's other problems with the image you are using so
you'll likely run into more but those look like Linux/distro related
problems.

Please make sure you reply to the list if you do reply to this.

-- 
Doug Goldstein


[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 959 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2016-03-11 17:16                 ` help Wei Liu
  2016-03-15 17:56                   ` help Julien Grall
@ 2016-03-15 21:01                   ` Safa Hamza
  2016-03-15 23:47                     ` help Doug Goldstein
  1 sibling, 1 reply; 278+ messages in thread
From: Safa Hamza @ 2016-03-15 21:01 UTC (permalink / raw)
  To: Wei Liu; +Cc: Xen-devel


[-- Attachment #1.1: Type: text/plain, Size: 31267 bytes --]

i solve the problem by degugging the linux kernel .. the problem was the
instruction omap_smc1 ..i'm not sure about what it did but when i delete
this instruction it works ... but i face another problem .. the execution
now stops in
 ***********************************************************************************************************************************************************
U-Boot SPL 2013.10-rc2 (Mar 08 2016 - 14:23:51)
OMAP5432 ES2.0
SPL: Please implement spl_start_uboot() for your board
SPL: Direct Linux boot not active!
reading u-boot.img
reading u-boot.img


U-Boot 2013.10-rc2 (Mar 08 2016 - 14:23:51)

CPU  : OMAP5432 ES2.0
Board: OMAP5432 uEVM
I2C:   ready
DRAM:  2 GiB
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
Net:   No ethernet found.
Hit any key to stop autoboot:  0
mmc0 is current device
reading boot.scr
972 bytes read in 5 ms (189.5 KiB/s)
Running bootscript from mmc0 ...
## Executing script at 82000000
reading omap5-uevm.dtb
44836 bytes read in 8 ms (5.3 MiB/s)
reading xen-uImage
787372 bytes read in 44 ms (17.1 MiB/s)
reading zImage
4283720 bytes read in 215 ms (19 MiB/s)
## Booting kernel from Legacy Image at 90000000 ...
   Image Name:
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    787308 Bytes = 768.9 KiB
   Load Address: 80200000
   Entry Point:  80200000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 825f0000
   Booting using the fdt blob at 0x825f0000
   Loading Kernel Image ... OK
   reserving fdt memory region: addr=825f0000 size=c000
   Using Device Tree in place at 825f0000, end 825fefff

Starting kernel ...

- UART enabled -
- CPU 00000000 booting -
- Xen starting in Hyp mode -
- Zero BSS -
- Setting up control registers -
- Turning on paging -
- Ready -
(XEN) Checking for initrd in /chosen
(XEN) RAM: 0000000080000000 - 00000000feffffff
(XEN)
(XEN) MODULE[0]: 00000000825f0000 - 00000000825fc000 Device Tree
(XEN) MODULE[1]: 00000000a0000000 - 00000000a0a00000 Kernel
(XEN)  RESVD[0]: 00000000825f0000 - 00000000825fc000
(XEN)
(XEN) Command line: sync_console console=dtuart dtuart=serial2
(XEN) Placing Xen at 0x00000000fee00000-0x00000000ff000000
(XEN) Update BOOTMOD_XEN from 0000000080200000-0000000080305701 =>
00000000fee00000-00000000fef05701
(XEN) Xen heap: 00000000fa000000-00000000fe000000 (16384 pages)
(XEN) Dom heap: 503808 pages
(XEN) Domain heap initialised
(XEN) Platform: TI OMAP5
(XEN) Looking for dtuart at "serial2", options ""
 Xen 4.7-unstable
(XEN) Xen version 4.7-unstable (root@) (arm-linux-gnueabihf-gcc (Linaro GCC
2014.11) 4.9.3 20141031 (prerelease)) debug=y Tue Mar  1 15:02:30 CET 2016
(XEN) Latest ChangeSet: Sun Feb 28 16:03:51 2016 -0500 git:42391c6
(XEN) Console output is synchronous.
(XEN) Processor: 412fc0f2: "ARM Limited", variant: 0x2, part 0xc0f, rev 0x2
(XEN) 32-bit Execution:
(XEN)   Processor Features: 00001131:00011011
(XEN)     Instruction Sets: AArch32 A32 Thumb Thumb-2 ThumbEE Jazelle
(XEN)     Extensions: GenericTimer Security
(XEN)   Debug Features: 02010555
(XEN)   Auxiliary Features: 00000000
(XEN)   Memory Model Features: 10201105 20000000 01240000 02102211
(XEN)  ISA Features: 02101110 13112111 21232041 11112131 10011142 00000000
(XEN) Set AuxCoreBoot1 to 00000000fee0004c (0020004c)
(XEN) Set AuxCoreBoot0 to 0x20
(XEN) Generic Timer IRQ: phys=30 hyp=26 virt=27 Freq: 6144 KHz
(XEN) GICv2: WARNING: The GICC size is too small: 0x1000 expected 0x2000
(XEN) GICv2 initialization:
(XEN)         gic_dist_addr=0000000048211000
(XEN)         gic_cpu_addr=0000000048212000
(XEN)         gic_hyp_addr=0000000048214000
(XEN)         gic_vcpu_addr=0000000048216000
(XEN)         gic_maintenance_irq=25
(XEN) GICv2: 192 lines, 2 cpus, secure (IID 0000043b).
(XEN) Using scheduler: SMP Credit Scheduler (credit)
(XEN) Allocated console ring of 16 KiB.
(XEN) VFP implementer 0x41 architecture 4 part 0x30 variant 0xf rev 0x0
(XEN) Bringing up CPU1
- CPU 00000001 booting -
- Xen starting in Hyp mode -
- Setting up control registers -
- Turning on paging -
- Ready -
(XEN) CPU 1 booted.
(XEN) Brought up 2 CPUs
(XEN) P2M: 40-bit IPA
(XEN) P2M: 3 levels with order-1 root, VTCR 0x80003558
(XEN) I/O virtualisation disabled
(XEN) *** LOADING DOMAIN 0 ***
(XEN) Loading kernel from boot module @ 00000000a0000000
(XEN) Allocating 1:1 mappings totalling 128MB for dom0:
(XEN) BANK[0] 0x000000a8000000-0x000000b0000000 (128MB)
(XEN) Grant table range: 0x000000fee00000-0x000000fee63000
(XEN) Loading zImage from 00000000a0000000 to
00000000afa00000-00000000afe15d48
(XEN) Allocating PPI 16 for event channel interrupt
(XEN) Loading dom0 DTB to 0x00000000af800000-0x00000000af80aece
(XEN) Scrubbing Free RAM on 1 nodes using 2 CPUs
(XEN) ........done.
(XEN) Initial low memory virq threshold set at 0x4000 pages.
(XEN) Std. Loglevel: All
(XEN) Guest Loglevel: All
(XEN) **********************************************
(XEN) ******* WARNING: CONSOLE OUTPUT IS SYNCHRONOUS
(XEN) ******* This option is intended to aid debugging of Xen by ensuring
(XEN) ******* that all output is synchronously delivered on the serial line.
(XEN) ******* However it can introduce SIGNIFICANT latencies and affect
(XEN) ******* timekeeping. It is NOT recommended for production use!
(XEN) **********************************************
(XEN) 3... 2... 1...
(XEN) *** Serial input -> DOM0 (type 'CTRL-a' three times to switch input
to Xen)
(XEN) Freed 280kB init memory.
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 3.15.0-rc2-00199-g0c0a3e5-dirty
(safa@safa-VirtualBox) (gcc version 4.9.2 (Ubuntu/Linaro 4.9.2-10ubuntu10)
) #6 SMP Mon Mar 14 18:14:21 CET 2016
[    0.000000] CPU: ARMv7 Processor [412fc0f2] revision 2 (ARMv7),
cr=10c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction
cache
[    0.000000] Machine model: TI OMAP5 uEVM board
[    0.000000] debug: ignoring loglevel setting.
[    0.000000] cma: CMA: reserved 16 MiB at ae800000
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] On node 0 totalpages: 32512
[    0.000000] free_area_init_node: node 0, pgdat c085ce00, node_mem_map
c7df2000
[    0.000000]   Normal zone: 256 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 32512 pages, LIFO batch:7
[    0.000000] psci: probing function IDs from device-tree
[    0.000000] OMAP5432 ES2.0
[    0.000000] PERCPU: Embedded 9 pages/cpu @c7db0000 s14784 r8192 d13888
u36864
[    0.000000] pcpu-alloc: s14784 r8192 d13888 u36864 alloc=9*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.
Total pages: 32256
[    0.000000] Kernel command line: console=hvc0,115200n8 earlyprintk=xen
debug ignore_loglevel root=/dev/mmcblk0p2 rw rootwait fixrtc
[    0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536
bytes)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Memory: 98080K/130048K available (5672K kernel code, 441K
rwdata, 2092K rodata, 342K init, 5534K bss, 31968K reserved, 0K highmem)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000]     vmalloc : 0xc8800000 - 0xff000000   ( 872 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xc8000000   ( 128 MB)
[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
[    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
[    0.000000]       .text : 0xc0008000 - 0xc079d4c4   (7766 kB)
[    0.000000]       .init : 0xc079e000 - 0xc07f39c0   ( 343 kB)
[    0.000000]       .data : 0xc07f4000 - 0xc0862600   ( 442 kB)
[    0.000000]        .bss : 0xc0862600 - 0xc0dc9f00   (5535 kB)
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS:16 nr_irqs:16 16
[    0.000000] OMAP clockevent source: timer1 at 32768 Hz
[    0.000000] sched_clock: 32 bits at 32kHz, resolution 30517ns, wraps
every 65536000000000ns
[    0.000000] OMAP clocksource: 32k_counter at 32768 Hz
[    0.000305] Architected cp15 timer(s) running at 6.14MHz (virt).
[    0.000309] sched_clock: 56 bits at 6MHz, resolution 162ns, wraps every
2796202663936ns
[    0.000315] Switching to timer-based delay loop
[    0.001115] Console: colour dummy device 80x30
[    0.001145] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc.,
Ingo Molnar
[    0.001152] ... MAX_LOCKDEP_SUBCLASSES:  8
[    0.001157] ... MAX_LOCK_DEPTH:          48
[    0.001163] ... MAX_LOCKDEP_KEYS:        8191
[    0.001168] ... CLASSHASH_SIZE:          4096
[    0.001173] ... MAX_LOCKDEP_ENTRIES:     16384
[    0.001178] ... MAX_LOCKDEP_CHAINS:      32768
[    0.001182] ... CHAINHASH_SIZE:          16384
[    0.001188]  memory used by lock dependency info: 3695 kB
[    0.001193]  per task-struct memory footprint: 1152 bytes
[    0.001213] Calibrating delay loop (skipped), value calculated using
timer frequency.. 12.28 BogoMIPS (lpj=61440)
[    0.001224] pid_max: default: 32768 minimum: 301
[    0.001515] Security Framework initialized
[    0.001608] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.001617] Mountpoint-cache hash table entries: 1024 (order: 0, 4096
bytes)
[    0.003039] CPU: Testing write buffer coherency: ok
[    0.003679] /cpus/cpu@0 missing clock-frequency property
[    0.003705] /cpus/cpu@1 missing clock-frequency property
[    0.003714] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.003847] Xen 4.7 support found, events_irq=16 gnttab_frame=0xfee00000
[    0.004015] xen:grant_table: Grant tables using version 1 layout
[    0.004053] Grant table initialized
[    0.004103] xen:events: Using FIFO-based ABI
[    0.004125] Xen: initializing cpu0
[    0.004182] Setting up static identity map for 0xa8568c20 - 0xa8568c90
[    0.007160] CPU1: Booted secondary processor
[    0.007222] Xen: initializing cpu1
[    0.007261] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.007599] Brought up 2 CPUs
[    0.007612] SMP: Total of 2 processors activated.
[    0.007617] CPU: All CPU(s) started in SVC mode.
[    0.009402] devtmpfs: initialized
[    0.018309] VFP support v0.3: implementor 41 architecture 4 part 30
variant f rev 0
[    0.019398] omap_hwmod: l3_main_3 using broken dt data from ocp
[    0.020420] omap_hwmod: l3_main_2 using broken dt data from ocp
[    0.041658] ------------[ cut here ]------------
[    0.041676] WARNING: CPU: 0 PID: 1 at
arch/arm/mach-omap2/omap_hwmod.c:2538 _init+0x38c/0x3dc()
[    0.041682] omap_hwmod: mailbox: doesn't have mpu register target base
[    0.041687] Modules linked in:
[    0.041700] CPU: 0 PID: 1 Comm: swapper/0 Not tainted
3.15.0-rc2-00199-g0c0a3e5-dirty #6
[    0.041718] [<c0015b04>] (unwind_backtrace) from [<c0012848>]
(show_stack+0x10/0x14)
[    0.041732] [<c0012848>] (show_stack) from [<c055d608>]
(dump_stack+0x84/0x9c)
[    0.041746] [<c055d608>] (dump_stack) from [<c0039b00>]
(warn_slowpath_common+0x68/0x8c)
[    0.041757] [<c0039b00>] (warn_slowpath_common) from [<c0039b54>]
(warn_slowpath_fmt+0x30/0x40)
[    0.041770] [<c0039b54>] (warn_slowpath_fmt) from [<c07aa4c4>]
(_init+0x38c/0x3dc)
[    0.041784] [<c07aa4c4>] (_init) from [<c00281e0>]
(omap_hwmod_for_each+0x34/0x60)
[    0.041795] [<c00281e0>] (omap_hwmod_for_each) from [<c07aa9b0>]
(__omap_hwmod_setup_all+0x24/0x40)
[    0.041806] [<c07aa9b0>] (__omap_hwmod_setup_all) from [<c000896c>]
(do_one_initcall+0xe8/0x158)
[    0.041819] [<c000896c>] (do_one_initcall) from [<c079ec10>]
(kernel_init_freeable+0x100/0x1c4)
[    0.041830] [<c079ec10>] (kernel_init_freeable) from [<c05592c0>]
(kernel_init+0x8/0xec)
[    0.041842] [<c05592c0>] (kernel_init) from [<c000ee68>]
(ret_from_fork+0x14/0x2c)
[    0.041880] ---[ end trace 7920d429778a6b5c ]---
[    0.066049] ------------[ cut here ]------------
[    0.066062] WARNING: CPU: 0 PID: 1 at
arch/arm/mach-omap2/omap_hwmod.c:2538 _init+0x38c/0x3dc()
[    0.066069] omap_hwmod: uart3: doesn't have mpu register target base
[    0.066073] Modules linked in:
[    0.066084] CPU: 0 PID: 1 Comm: swapper/0 Tainted: G        W
3.15.0-rc2-00199-g0c0a3e5-dirty #6
[    0.066097] [<c0015b04>] (unwind_backtrace) from [<c0012848>]
(show_stack+0x10/0x14)
[    0.066108] [<c0012848>] (show_stack) from [<c055d608>]
(dump_stack+0x84/0x9c)
[    0.066120] [<c055d608>] (dump_stack) from [<c0039b00>]
(warn_slowpath_common+0x68/0x8c)
[    0.066131] [<c0039b00>] (warn_slowpath_common) from [<c0039b54>]
(warn_slowpath_fmt+0x30/0x40)
[    0.066143] [<c0039b54>] (warn_slowpath_fmt) from [<c07aa4c4>]
(_init+0x38c/0x3dc)
[    0.066155] [<c07aa4c4>] (_init) from [<c00281e0>]
(omap_hwmod_for_each+0x34/0x60)
[    0.066166] [<c00281e0>] (omap_hwmod_for_each) from [<c07aa9b0>]
(__omap_hwmod_setup_all+0x24/0x40)
[    0.066177] [<c07aa9b0>] (__omap_hwmod_setup_all) from [<c000896c>]
(do_one_initcall+0xe8/0x158)
[    0.066188] [<c000896c>] (do_one_initcall) from [<c079ec10>]
(kernel_init_freeable+0x100/0x1c4)
[    0.066199] [<c079ec10>] (kernel_init_freeable) from [<c05592c0>]
(kernel_init+0x8/0xec)
[    0.066209] [<c05592c0>] (kernel_init) from [<c000ee68>]
(ret_from_fork+0x14/0x2c)
[    0.066215] ---[ end trace 7920d429778a6b5d ]---
[    0.115735] pinctrl core: initialized pinctrl subsystem
[    0.117384] regulator-dummy: no parameters
[    0.148783] NET: Registered protocol family 16
[    0.152399] DMA: preallocated 256 KiB pool for atomic coherent
allocations
[    0.154718] xen:swiotlb_xen: Warning: only able to allocate 8 MB for
software IO TLB
[    0.156824] software IO TLB [mem 0xad000000-0xad800000] (8MB) mapped at
[c5000000-c57fffff]
[    0.172613] gpiochip_add: registered GPIOs 0 to 31 on device: gpio
[    0.173184] OMAP GPIO hardware version 0.1
[    0.173881] gpiochip_add: registered GPIOs 32 to 63 on device: gpio
[    0.175095] gpiochip_add: registered GPIOs 64 to 95 on device: gpio
[    0.176273] gpiochip_add: registered GPIOs 96 to 127 on device: gpio
[    0.177467] gpiochip_add: registered GPIOs 128 to 159 on device: gpio
[    0.178697] gpiochip_add: registered GPIOs 160 to 191 on device: gpio
[    0.179865] gpiochip_add: registered GPIOs 192 to 223 on device: gpio
[    0.181047] gpiochip_add: registered GPIOs 224 to 255 on device: gpio
[    0.181873] platform 50000000.gpmc: Cannot lookup hwmod 'gpmc'
[    0.182047] omap-gpmc 50000000.gpmc: _od_fail_runtime_resume: FIXME:
missing hwmod/omap_dev info
[    0.182062] omap-gpmc 50000000.gpmc: GPMC revision 6.0
[    0.199543] No ATAGs?
[    0.199637] hw-breakpoint: Failed to enable monitor mode on CPU 0.
[    0.201312] OMAP DMA hardware revision 0.0
[    0.218416] edma-dma-engine edma-dma-engine.0: Can't allocate PaRAM
dummy slot
[    0.218453] edma-dma-engine: probe of edma-dma-engine.0 failed with
error -5
[    0.242352] omap-dma-engine 4a056000.dma-controller: OMAP DMA engine
driver
[    0.242663] xen:balloon: Initialising balloon driver
[    0.243011] xen_balloon: Initialising balloon driver
[    0.243768] of_get_named_gpiod_flags: can't parse gpios property of node
'/fixedregulator-mmcsd[0]'
[    0.244107] vmmcsd_fixed: 3000 mV
[    0.246875] SCSI subsystem initialized
[    0.247403] usbcore: registered new interface driver usbfs
[    0.247521] usbcore: registered new interface driver hub
[    0.247739] usbcore: registered new device driver usb
[    0.248034] of_get_named_gpiod_flags exited with status 0
[    0.248078] hsusb2_phy.4 supply vcc not found, using dummy regulator
[    0.248445] of_get_named_gpiod_flags exited with status 0
[    0.248482] hsusb3_phy.5 supply vcc not found, using dummy regulator
[    0.249079] omap_i2c 48070000.i2c: could not find pctldev for node
/ocp/pinmux@4a002840/pinmux_i2c1_pins, deferring probe
[    0.249100] platform 48070000.i2c: Driver omap_i2c requests probe
deferral
[    0.249860] omap_i2c 48072000.i2c: bus 1 rev0.12 at 100 kHz
[    0.250464] omap_i2c 48060000.i2c: bus 2 rev0.12 at 100 kHz
[    0.251048] omap_i2c 4807a000.i2c: bus 3 rev0.12 at 100 kHz
[    0.251117] omap_i2c 4807c000.i2c: could not find pctldev for node
/ocp/pinmux@4a002840/pinmux_i2c5_pins, deferring probe
[    0.251137] platform 4807c000.i2c: Driver omap_i2c requests probe
deferral
[    0.253809] Switched to clocksource arch_sys_counter
[    0.343964] /thermal-zones/cpu_thermal/cooling-maps/map0: could not find
phandle
[    0.343975] missing cooling_device property
[    0.343985] failed to build thermal zone cpu_thermal: -22
[    0.344840] NET: Registered protocol family 2
[    0.345926] TCP established hash table entries: 1024 (order: 0, 4096
bytes)
[    0.346021] TCP bind hash table entries: 1024 (order: 3, 36864 bytes)
[    0.346306] TCP: Hash tables configured (established 1024 bind 1024)
[    0.346377] TCP: reno registered
[    0.346394] UDP hash table entries: 256 (order: 2, 20480 bytes)
[    0.346539] UDP-Lite hash table entries: 256 (order: 2, 20480 bytes)
[    0.347277] NET: Registered protocol family 1
[    0.348104] RPC: Registered named UNIX socket transport module.
[    0.348113] RPC: Registered udp transport module.
[    0.348120] RPC: Registered tcp transport module.
[    0.348127] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.352189] futex hash table entries: 512 (order: 3, 32768 bytes)
[    0.444169] VFS: Disk quotas dquot_6.5.2
[    0.444270] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    0.446013] NFS: Registering the id_resolver key type
[    0.446222] Key type id_resolver registered
[    0.446234] Key type id_legacy registered
[    0.446298] jffs2: version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat,
Inc.
[    0.446883] msgmni has been set to 223
[    0.448962] io scheduler noop registered
[    0.448972] io scheduler deadline registered
[    0.449071] io scheduler cfq registered (default)
[    0.452169] pinctrl-single 4a002840.pinmux: 219 pins at pa fc002840 size
438
[    0.452494] pinctrl-single 4ae0c840.pinmux: 28 pins at pa fce0c840 size
56
[    0.454820] xen:xen_evtchn: Event-channel device installed
[    0.456206] pbias_mmc_omap5: 1800 <--> 3000 mV at 3000 mV
[    1.596803] console [hvc0] enabled
[    1.600320] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    1.610569] omap_uart 4806a000.serial: no wakeirq for uart0
[    1.612277] of_get_named_gpiod_flags: can't parse gpios property of node
'/ocp/serial@4806a000[0]'
[    1.621835] 4806a000.serial: ttyO0 at MMIO 0x4806a000 (irq = 104,
base_baud = 3000000) is a OMAP UART0
[    1.631724] omap_uart 4806c000.serial: no wakeirq for uart0
[    1.636481] of_get_named_gpiod_flags: can't parse gpios property of node
'/ocp/serial@4806c000[0]'
[    1.645825] 4806c000.serial: ttyO1 at MMIO 0x4806c000 (irq = 105,
base_baud = 3000000) is a OMAP UART1
[    1.656047] omap_uart 4806e000.serial: no wakeirq for uart0
[    1.660586] of_get_named_gpiod_flags: can't parse gpios property of node
'/ocp/serial@4806e000[0]'
[    1.669965] 4806e000.serial: ttyO3 at MMIO 0x4806e000 (irq = 102,
base_baud = 3000000) is a OMAP UART3
[    1.679855] omap_uart 48066000.serial: no wakeirq for uart0
[    1.684819] of_get_named_gpiod_flags: can't parse gpios property of node
'/ocp/serial@48066000[0]'
[    1.694130] 48066000.serial: ttyO4 at MMIO 0x48066000 (irq = 137,
base_baud = 3000000) is a OMAP UART4
[    1.703960] omap_uart 48068000.serial: no wakeirq for uart0
[    1.708896] of_get_named_gpiod_flags: can't parse gpios property of node
'/ocp/serial@48068000[0]'
[    1.718255] 48068000.serial: ttyO5 at MMIO 0x48068000 (irq = 138,
base_baud = 3000000) is a OMAP UART5
[    1.742766] brd: module loaded
[    1.750884] loop: module loaded
[    1.753014] mtdoops: mtd device (mtddev=name/number) must be supplied
[    1.759336] xen_netfront: Initialising Xen virtual ethernet driver
[    1.761573] usbcore: registered new interface driver asix
[    1.766921] usbcore: registered new interface driver ax88179_178a
[    1.773061] usbcore: registered new interface driver cdc_ether
[    1.779050] usbcore: registered new interface driver smsc95xx
[    1.784854] usbcore: registered new interface driver net1080
[    1.790599] usbcore: registered new interface driver cdc_subset
[    1.796636] usbcore: registered new interface driver zaurus
[    1.802323] usbcore: registered new interface driver cdc_ncm
[    1.808547] usbcore: registered new interface driver cdc_wdm
[    1.813872] usbcore: registered new interface driver usb-storage
[    1.819940] usbcore: registered new interface driver usbtest
[    1.826825] mousedev: PS/2 mouse device common for all mice
[    1.832999] i2c /dev entries driver
[    1.836167] Driver for 1-wire Dallas network protocol.
[    1.842305] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60
sec
[    1.847437] xen_wdt: Xen WatchDog Timer Driver v0.01
[    1.852498] xen_wdt: cannot register miscdev on minor=130 (-16)
[    1.858117] wdt: probe of wdt failed with error -16
[    1.863712] of_get_named_gpiod_flags: can't parse gpios property of node
'/ocp/mmc@4809c000[0]'
[    1.871857] of_get_named_gpiod_flags: can't parse gpios property of node
'/ocp/mmc@4809c000[0]'
[    1.881916] omap_hsmmc 4809c000.mmc: pins are not configured from the
driver
[    1.923830] of_get_named_gpiod_flags: can't parse gpios property of node
'/ocp/mmc@480b4000[0]'
[    1.926990] of_get_named_gpiod_flags: can't parse gpios property of node
'/ocp/mmc@480b4000[0]'
[    1.936168] omap_hsmmc 480b4000.mmc: pins are not configured from the
driver
[    1.959525] mmc0: host does not support reading read-only switch.
assuming write-enable.
[    1.962164] mmc0: new SDHC card at address 0001
[    1.967872] mmcblk0: mmc0:0001 Team 3.71 GiB
[    1.973840] of_get_named_gpiod_flags: can't parse gpios property of node
'/ocp/mmc@480ad000[0]'
[    1.979958] of_get_named_gpiod_flags: can't parse gpios property of node
'/ocp/mmc@480ad000[0]'
[    1.983851]  mmcblk0: p1 p2
[    1.991853] 480ad000.mmc supply vmmc not found, using dummy regulator
[    1.998376] omap_hsmmc 480ad000.mmc: pins are not configured from the
driver
[    2.005661] omap_hsmmc 480ad000.mmc: could not set regulator OCR (-22)
[    2.043817] of_get_named_gpiod_flags: can't parse gpios property of node
'/ocp/mmc@480d1000[0]'
[    2.046988] of_get_named_gpiod_flags: can't parse gpios property of node
'/ocp/mmc@480d1000[0]'
[    2.055992] 480d1000.mmc supply vmmc not found, using dummy regulator
[    2.056760] mmc1: BKOPS_EN bit is not set
[    2.059364] mmc1: new high speed MMC card at address 0001
[    2.072079] omap_hsmmc 480d1000.mmc: could not set regulator OCR (-22)
[    2.073811] mmcblk1: mmc1:0001 SEM04G 3.68 GiB
[    2.074048] mmcblk1boot0: mmc1:0001 SEM04G partition 1 2.00 MiB
[    2.074291] mmcblk1boot1: mmc1:0001 SEM04G partition 2 2.00 MiB
[    2.078427] Alternate GPT is invalid, using primary GPT.
[    2.078444]  mmcblk1: p1 p2 p3 p4 p5 p6 p7
[    2.083838]  mmcblk1boot1: unknown partition table
[    2.086027]  mmcblk1boot0: unknown partition table
[    2.114607] omap_hsmmc 480d1000.mmc: pins are not configured from the
driver
[    2.121951] omap_hsmmc 480d1000.mmc: could not set regulator OCR (-22)
[    2.163840] of_get_named_gpiod_flags: can't parse gpios property of node
'/ocp/mmc@480d5000[0]'
[    2.166999] of_get_named_gpiod_flags: can't parse gpios property of node
'/ocp/mmc@480d5000[0]'
[    2.176026] 480d5000.mmc supply vmmc not found, using dummy regulator
[    2.182463] omap_hsmmc 480d5000.mmc: could not set regulator OCR (-22)
[    2.189017] omap_hsmmc 480d5000.mmc: pins are not configured from the
driver
[    2.196402] omap_hsmmc 480d5000.mmc: could not set regulator OCR (-22)
[    2.234283] usbcore: registered new interface driver usbhid
[    2.234383] usbhid: USB HID core driver
[    2.239037] oprofile: no performance counters
[    2.243250] oprofile: using timer interrupt.
[    2.247320] TCP: cubic registered
[    2.250433] Initializing XFRM netlink socket
[    2.254855] NET: Registered protocol family 17
[    2.259367] NET: Registered protocol family 15
[    2.264072] Key type dns_resolver registered
[    2.268932] ThumbEE CPU extension supported.
[    2.272598] Registering SWP/SWPB emulation handler
[    2.282613] palmas 0-0048: Irq flag is 0x00000000
[    2.287428] palmas 0-0048: Muxing GPIO 2, PWM 0, LED 0
[    2.328791] smps123: 600 <--> 1500 mV at 1060 mV
[    2.332072] smps45: 600 <--> 1310 mV at 1030 mV
[    2.336652] smps6: 1200 mV
[    2.339842] smps7: 1800 mV
[    2.342932] smps8: 600 <--> 1310 mV at 1040 mV
[    2.346011] smps9: 2100 mV
[    2.348275] smps10_out2: 5000 mV
[    2.351260] smps10_out1: 5000 mV
[    2.353777] ldo1: 1500 <--> 1800 mV
[    2.358517] ldo2: 2800 mV
[    2.362135] ldo3: 1500 mV
[    2.363802] ldo4: 1500 <--> 1800 mV
[    2.368464] ldo5: 1800 mV
[    2.372898] ldo6: 1200 mV
[    2.375134] ldo7: 2000 mV
[    2.378081] ldo8: 3000 mV
[    2.380662] ldo9: 1800 <--> 3000 mV at 3000 mV
[    2.384241] ldoln: 1800 mV
[    2.387238] ldousb: 3250 mV
[    2.388537] REGEN1: no parameters
[    2.391024] REGEN2: no parameters
[    2.394775] regen3: no parameters
[    2.398352] SYSEN1: no parameters
[    2.401215] SYSEN2: no parameters
[    2.404489] omap_i2c 48070000.i2c: bus 0 rev0.12 at 400 kHz
[    2.411055] omap_i2c 4807c000.i2c: bus 4 rev0.12 at 400 kHz
[    2.416843] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
[    2.448585] EXT3-fs (mmcblk0p2): error: couldn't mount because of
unsupported optional features (240)
[    2.453480] EXT2-fs (mmcblk0p2): error: couldn't mount because of
unsupported optional features (244)
[    2.602885] EXT4-fs (mmcblk0p2): recovery complete
[    2.605400] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data
mode. Opts: (null)
[    2.610379] VFS: Mounted root (ext4 filesystem) on device 179:2.
[    2.623192] devtmpfs: mounted
[    2.623584] Freeing unused kernel memory: 340K (c079e000 - c07f3000)
INIT: version 2.88 booting
Starting udev
[    3.169771] udev[871]: starting version 164
[    5.205065] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some
data may be corrupt. Please run fsck.
[    5.400187] EXT4-fs (mmcblk1p4): recovery complete
[    5.400309] EXT4-fs (mmcblk1p4): mounted filesystem with ordered data
mode. Opts: (null)
[    5.492162] random: nonblocking pool is initialized
ERROR: could not open directory
/lib/modules/3.15.0-rc2-00199-g0c0a3e5-dirty: No such file or directory
WARNING: -e needs -E or -F
ERROR: could not open directory
/lib/modules/3.15.0-rc2-00199-g0c0a3e5-dirty: No such file or directory
FATAL: could not search modules: No such file or directory
Starting Bootlog daemon: bootlogd: cannot allocate pseudo tty: No such file
or directory
bootlogd.
[    5.831227] EXT4-fs (mmcblk0p2): re-mounted. Opts: data=ordered
ALSA: Restoring mixer settings...
Configuring network interfaces... /usr/sbin/alsactl: load_state:1686: No
soundcards found...
ifconfig: SIOCGIFFLAGS: No such device
done.
hwclock: can't open '/dev/misc/rtc': No such file or directory
Mon Jul  1 15:13:00 UTC 2013
hwclock: can't open '/dev/misc/rtc': No such file or directory
INIT: Entering runlevel: 5
Starting telnet daemon.
hwclock: can't open '/dev/misc/rtc': No such file or directory
Starting syslogd/klogd: done
Starting thttpd.
Stopping Bootlog daemon: bootlogd.

***************************************************************************************************************************************************
 no console appears .. i guess the problem in the file system ... but this
file works fine with the linux kernel in omap5 without  the xen hypervisor

should i make any changement in the rootfs so it can works with xen
hypervisor !! or any other solution !!
Regards


On Fri, Mar 11, 2016 at 6:16 PM, Wei Liu <wei.liu2@citrix.com> wrote:

> Add back xen-devel
>
> On Fri, Mar 11, 2016 at 05:23:22PM +0100, Safa Hamza wrote:
> > ok .. can u tell me how compile xen with debug symbols !!  i have
> xen-syms
> > after compiling xen with "make dist-xen XEN_TARGET_ARCH=arm32
> > CROSS_COMPILE=arm-linux-gnueabihf- CONFIG_EARLY_PRINTK=omap5432"   is
> this
> > the kernel  with  debug symbols
> >
>
> I'm not sure if you did the right thing because I've never done any ARM
> development. I'll let other people answer your question.
>
> Wei.
>
> > On Fri, Mar 11, 2016 at 5:09 PM, Wei Liu <wei.liu2@citrix.com> wrote:
> >
> > > On Fri, Mar 11, 2016 at 11:02:26AM -0500, Konrad Rzeszutek Wilk wrote:
> > > > On Fri, Mar 11, 2016 at 04:47:47PM +0100, Safa Hamza wrote:
> > > > > now i did just like u said ...  a new error appears
> > > >
> > > > Adding XEn-devel back. Please reply all.
> > > >
> > > > >
> > >
> ******************************************************************************
> > > > > U-Boot# fdt addr $dtb_addr_r
> > > > > U-Boot# fdt resize
> > > > > U-Boot# fdt set /chosen xen,xen-bootargs \"$xen_bootargs\"
> > > > > U-Boot# fdt resize
> > > > > U-Boot# fdt set /chosen xen,dom0-bootargs \"$dom0_bootargs\"
> > > > > U-Boot# fdt resize
> > > > > U-Boot# fdt mknode /chosen modules
> > > > > U-Boot# fdt set /chosen/modules '#address-cells' <1>
> > > > > U-Boot# fdt set /chosen/modules '#size-cells' <1>
> > > > > U-Boot# fdt mknode /chosen/modules module@0
> > > > > libfdt fdt_add_subnode(): FDT_ERR_NOSPACE
> > > > >
> > >
> ******************************************************************************
> > > > > but when i wrote  fdt resize before  fdt mknode /chosen/modules
> > > module@0
> > > > > this error disappear but still the execution stops as i mentioned
> > > before
> > > > >
> > >
> > > The message seems quite straight-forward to me -- one of the libfdt
> > > function call failed with some error.
> > >
> > > I'm afraid you need to do some manual debugging to figure out what went
> > > wrong.
> > >
> > > Wei.
> > >
> > > > > On Fri, Mar 11, 2016 at 4:20 PM, Konrad Rzeszutek Wilk <
> > > > > konrad.wilk@oracle.com> wrote:
> > > > >
> > > > > > On Fri, Mar 11, 2016 at 10:20:01AM -0500, Konrad Rzeszutek Wilk
> > > wrote:
> > > > > > > On Fri, Mar 11, 2016 at 04:05:58PM +0100, Safa Hamza wrote:
> > > > > >
> > > > > > And please do not drop Xen-devel. Adding it back on.
> > > > > >
> > > > > > > > i did like u said but nothing change ..
> > > > > > > >
> > > > > > >
> > > > > > > No you didn't. See below:
> > > > > > > > U-Boot# setenv dom0_bootargs 'console=hvc0,115200n8
> > > earlyprintk=xen
> > > > > > debug'
> > > > > > >
> > > > > > > You still have 115200n8
> > > > > >
> > > >
> > > > _______________________________________________
> > > > Xen-devel mailing list
> > > > Xen-devel@lists.xen.org
> > > > http://lists.xen.org/xen-devel
> > >
>

[-- Attachment #1.2: Type: text/html, Size: 50062 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2016-03-15 18:21                         ` help Konrad Rzeszutek Wilk
@ 2016-03-15 18:22                           ` Julien Grall
  0 siblings, 0 replies; 278+ messages in thread
From: Julien Grall @ 2016-03-15 18:22 UTC (permalink / raw)
  To: Konrad Rzeszutek Wilk; +Cc: Xen-devel, Wei Liu, Safa Hamza



On 15/03/16 18:21, Konrad Rzeszutek Wilk wrote:
> On Tue, Mar 15, 2016 at 06:16:44PM +0000, Julien Grall wrote:
>>
>>
>> On 15/03/16 18:09, Konrad Rzeszutek Wilk wrote:
>>> On Tue, Mar 15, 2016 at 05:56:46PM +0000, Julien Grall wrote:
>>>> Hi Safa,
>>>>
>>>> On 11/03/16 17:16, Wei Liu wrote:
>>>>> Add back xen-devel
>>>>>
>>>>> On Fri, Mar 11, 2016 at 05:23:22PM +0100, Safa Hamza wrote:
>>>>>> ok .. can u tell me how compile xen with debug symbols !!  i have xen-syms
>>>>>> after compiling xen with "make dist-xen XEN_TARGET_ARCH=arm32
>>>>>> CROSS_COMPILE=arm-linux-gnueabihf- CONFIG_EARLY_PRINTK=omap5432"   is this
>>>>>> the kernel  with  debug symbols
>>>>>>
>>>>
>>>> If you are using Xen unstable, the hypervisor will be compiled with debug
>>>> enabled by default. If not you can add "debug=y" on the build command line.
>>>>
>>>> xen/xen-syms contains the debug symbols, you can use tools such as addr2line
>>>> to get more debug information. However, it's not suitable to boot xen on
>>>
>>> s/xen/xen-syms/ ?
>>
>> s/xen/the hypervisor/
>
> You are saying you can't boot Xen on this board?

I meant, xen-syms is not suitable to boot the hypervisor on this board. 
You have to use xen/xen.

Sorry for the confusion.

Regards,

-- 
Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2016-03-15 18:16                       ` help Julien Grall
@ 2016-03-15 18:21                         ` Konrad Rzeszutek Wilk
  2016-03-15 18:22                           ` help Julien Grall
  0 siblings, 1 reply; 278+ messages in thread
From: Konrad Rzeszutek Wilk @ 2016-03-15 18:21 UTC (permalink / raw)
  To: Julien Grall; +Cc: Xen-devel, Wei Liu, Safa Hamza

On Tue, Mar 15, 2016 at 06:16:44PM +0000, Julien Grall wrote:
> 
> 
> On 15/03/16 18:09, Konrad Rzeszutek Wilk wrote:
> >On Tue, Mar 15, 2016 at 05:56:46PM +0000, Julien Grall wrote:
> >>Hi Safa,
> >>
> >>On 11/03/16 17:16, Wei Liu wrote:
> >>>Add back xen-devel
> >>>
> >>>On Fri, Mar 11, 2016 at 05:23:22PM +0100, Safa Hamza wrote:
> >>>>ok .. can u tell me how compile xen with debug symbols !!  i have xen-syms
> >>>>after compiling xen with "make dist-xen XEN_TARGET_ARCH=arm32
> >>>>CROSS_COMPILE=arm-linux-gnueabihf- CONFIG_EARLY_PRINTK=omap5432"   is this
> >>>>the kernel  with  debug symbols
> >>>>
> >>
> >>If you are using Xen unstable, the hypervisor will be compiled with debug
> >>enabled by default. If not you can add "debug=y" on the build command line.
> >>
> >>xen/xen-syms contains the debug symbols, you can use tools such as addr2line
> >>to get more debug information. However, it's not suitable to boot xen on
> >
> >s/xen/xen-syms/ ?
> 
> s/xen/the hypervisor/

You are saying you can't boot Xen on this board?

> 
> Regards,
> 
> -- 
> Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2016-03-15 18:09                     ` help Konrad Rzeszutek Wilk
@ 2016-03-15 18:16                       ` Julien Grall
  2016-03-15 18:21                         ` help Konrad Rzeszutek Wilk
  0 siblings, 1 reply; 278+ messages in thread
From: Julien Grall @ 2016-03-15 18:16 UTC (permalink / raw)
  To: Konrad Rzeszutek Wilk; +Cc: Xen-devel, Wei Liu, Safa Hamza



On 15/03/16 18:09, Konrad Rzeszutek Wilk wrote:
> On Tue, Mar 15, 2016 at 05:56:46PM +0000, Julien Grall wrote:
>> Hi Safa,
>>
>> On 11/03/16 17:16, Wei Liu wrote:
>>> Add back xen-devel
>>>
>>> On Fri, Mar 11, 2016 at 05:23:22PM +0100, Safa Hamza wrote:
>>>> ok .. can u tell me how compile xen with debug symbols !!  i have xen-syms
>>>> after compiling xen with "make dist-xen XEN_TARGET_ARCH=arm32
>>>> CROSS_COMPILE=arm-linux-gnueabihf- CONFIG_EARLY_PRINTK=omap5432"   is this
>>>> the kernel  with  debug symbols
>>>>
>>
>> If you are using Xen unstable, the hypervisor will be compiled with debug
>> enabled by default. If not you can add "debug=y" on the build command line.
>>
>> xen/xen-syms contains the debug symbols, you can use tools such as addr2line
>> to get more debug information. However, it's not suitable to boot xen on
>
> s/xen/xen-syms/ ?

s/xen/the hypervisor/

Regards,

-- 
Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2016-03-15 17:56                   ` help Julien Grall
@ 2016-03-15 18:09                     ` Konrad Rzeszutek Wilk
  2016-03-15 18:16                       ` help Julien Grall
  0 siblings, 1 reply; 278+ messages in thread
From: Konrad Rzeszutek Wilk @ 2016-03-15 18:09 UTC (permalink / raw)
  To: Julien Grall; +Cc: Xen-devel, Wei Liu, Safa Hamza

On Tue, Mar 15, 2016 at 05:56:46PM +0000, Julien Grall wrote:
> Hi Safa,
> 
> On 11/03/16 17:16, Wei Liu wrote:
> >Add back xen-devel
> >
> >On Fri, Mar 11, 2016 at 05:23:22PM +0100, Safa Hamza wrote:
> >>ok .. can u tell me how compile xen with debug symbols !!  i have xen-syms
> >>after compiling xen with "make dist-xen XEN_TARGET_ARCH=arm32
> >>CROSS_COMPILE=arm-linux-gnueabihf- CONFIG_EARLY_PRINTK=omap5432"   is this
> >>the kernel  with  debug symbols
> >>
> 
> If you are using Xen unstable, the hypervisor will be compiled with debug
> enabled by default. If not you can add "debug=y" on the build command line.
> 
> xen/xen-syms contains the debug symbols, you can use tools such as addr2line
> to get more debug information. However, it's not suitable to boot xen on

s/xen/xen-syms/ ?
> your board.
> 
> xen/xen is the actual hypervisor binary.
> 
> Regards,
> 
> -- 
> Julien Grall
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2016-03-11 17:16                 ` help Wei Liu
@ 2016-03-15 17:56                   ` Julien Grall
  2016-03-15 18:09                     ` help Konrad Rzeszutek Wilk
  2016-03-15 21:01                   ` help Safa Hamza
  1 sibling, 1 reply; 278+ messages in thread
From: Julien Grall @ 2016-03-15 17:56 UTC (permalink / raw)
  To: Wei Liu; +Cc: Xen-devel, Safa Hamza

Hi Safa,

On 11/03/16 17:16, Wei Liu wrote:
> Add back xen-devel
>
> On Fri, Mar 11, 2016 at 05:23:22PM +0100, Safa Hamza wrote:
>> ok .. can u tell me how compile xen with debug symbols !!  i have xen-syms
>> after compiling xen with "make dist-xen XEN_TARGET_ARCH=arm32
>> CROSS_COMPILE=arm-linux-gnueabihf- CONFIG_EARLY_PRINTK=omap5432"   is this
>> the kernel  with  debug symbols
>>

If you are using Xen unstable, the hypervisor will be compiled with 
debug enabled by default. If not you can add "debug=y" on the build 
command line.

xen/xen-syms contains the debug symbols, you can use tools such as 
addr2line to get more debug information. However, it's not suitable to 
boot xen on your board.

xen/xen is the actual hypervisor binary.

Regards,

-- 
Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
       [not found]               ` <CAFwQ9hFx_ctRJdPzuE03asqYwcdxAGPFii_Ns0WFk3dmrVSfBQ@mail.gmail.com>
@ 2016-03-11 17:16                 ` Wei Liu
  2016-03-15 17:56                   ` help Julien Grall
  2016-03-15 21:01                   ` help Safa Hamza
  0 siblings, 2 replies; 278+ messages in thread
From: Wei Liu @ 2016-03-11 17:16 UTC (permalink / raw)
  To: Safa Hamza; +Cc: Xen-devel, Wei Liu

Add back xen-devel

On Fri, Mar 11, 2016 at 05:23:22PM +0100, Safa Hamza wrote:
> ok .. can u tell me how compile xen with debug symbols !!  i have xen-syms
> after compiling xen with "make dist-xen XEN_TARGET_ARCH=arm32
> CROSS_COMPILE=arm-linux-gnueabihf- CONFIG_EARLY_PRINTK=omap5432"   is this
> the kernel  with  debug symbols
> 

I'm not sure if you did the right thing because I've never done any ARM
development. I'll let other people answer your question.

Wei.

> On Fri, Mar 11, 2016 at 5:09 PM, Wei Liu <wei.liu2@citrix.com> wrote:
> 
> > On Fri, Mar 11, 2016 at 11:02:26AM -0500, Konrad Rzeszutek Wilk wrote:
> > > On Fri, Mar 11, 2016 at 04:47:47PM +0100, Safa Hamza wrote:
> > > > now i did just like u said ...  a new error appears
> > >
> > > Adding XEn-devel back. Please reply all.
> > >
> > > >
> > ******************************************************************************
> > > > U-Boot# fdt addr $dtb_addr_r
> > > > U-Boot# fdt resize
> > > > U-Boot# fdt set /chosen xen,xen-bootargs \"$xen_bootargs\"
> > > > U-Boot# fdt resize
> > > > U-Boot# fdt set /chosen xen,dom0-bootargs \"$dom0_bootargs\"
> > > > U-Boot# fdt resize
> > > > U-Boot# fdt mknode /chosen modules
> > > > U-Boot# fdt set /chosen/modules '#address-cells' <1>
> > > > U-Boot# fdt set /chosen/modules '#size-cells' <1>
> > > > U-Boot# fdt mknode /chosen/modules module@0
> > > > libfdt fdt_add_subnode(): FDT_ERR_NOSPACE
> > > >
> > ******************************************************************************
> > > > but when i wrote  fdt resize before  fdt mknode /chosen/modules
> > module@0
> > > > this error disappear but still the execution stops as i mentioned
> > before
> > > >
> >
> > The message seems quite straight-forward to me -- one of the libfdt
> > function call failed with some error.
> >
> > I'm afraid you need to do some manual debugging to figure out what went
> > wrong.
> >
> > Wei.
> >
> > > > On Fri, Mar 11, 2016 at 4:20 PM, Konrad Rzeszutek Wilk <
> > > > konrad.wilk@oracle.com> wrote:
> > > >
> > > > > On Fri, Mar 11, 2016 at 10:20:01AM -0500, Konrad Rzeszutek Wilk
> > wrote:
> > > > > > On Fri, Mar 11, 2016 at 04:05:58PM +0100, Safa Hamza wrote:
> > > > >
> > > > > And please do not drop Xen-devel. Adding it back on.
> > > > >
> > > > > > > i did like u said but nothing change ..
> > > > > > >
> > > > > >
> > > > > > No you didn't. See below:
> > > > > > > U-Boot# setenv dom0_bootargs 'console=hvc0,115200n8
> > earlyprintk=xen
> > > > > debug'
> > > > > >
> > > > > > You still have 115200n8
> > > > >
> > >
> > > _______________________________________________
> > > Xen-devel mailing list
> > > Xen-devel@lists.xen.org
> > > http://lists.xen.org/xen-devel
> >

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2016-03-11 16:02           ` help Konrad Rzeszutek Wilk
  2016-03-11 16:08             ` help Safa Hamza
@ 2016-03-11 16:09             ` Wei Liu
       [not found]               ` <CAFwQ9hFx_ctRJdPzuE03asqYwcdxAGPFii_Ns0WFk3dmrVSfBQ@mail.gmail.com>
  1 sibling, 1 reply; 278+ messages in thread
From: Wei Liu @ 2016-03-11 16:09 UTC (permalink / raw)
  To: Konrad Rzeszutek Wilk; +Cc: xen-devel, Wei Liu, Safa Hamza

On Fri, Mar 11, 2016 at 11:02:26AM -0500, Konrad Rzeszutek Wilk wrote:
> On Fri, Mar 11, 2016 at 04:47:47PM +0100, Safa Hamza wrote:
> > now i did just like u said ...  a new error appears
> 
> Adding XEn-devel back. Please reply all.
> 
> > ******************************************************************************
> > U-Boot# fdt addr $dtb_addr_r
> > U-Boot# fdt resize
> > U-Boot# fdt set /chosen xen,xen-bootargs \"$xen_bootargs\"
> > U-Boot# fdt resize
> > U-Boot# fdt set /chosen xen,dom0-bootargs \"$dom0_bootargs\"
> > U-Boot# fdt resize
> > U-Boot# fdt mknode /chosen modules
> > U-Boot# fdt set /chosen/modules '#address-cells' <1>
> > U-Boot# fdt set /chosen/modules '#size-cells' <1>
> > U-Boot# fdt mknode /chosen/modules module@0
> > libfdt fdt_add_subnode(): FDT_ERR_NOSPACE
> > ******************************************************************************
> > but when i wrote  fdt resize before  fdt mknode /chosen/modules module@0
> > this error disappear but still the execution stops as i mentioned before
> > 

The message seems quite straight-forward to me -- one of the libfdt
function call failed with some error.

I'm afraid you need to do some manual debugging to figure out what went
wrong.

Wei.

> > On Fri, Mar 11, 2016 at 4:20 PM, Konrad Rzeszutek Wilk <
> > konrad.wilk@oracle.com> wrote:
> > 
> > > On Fri, Mar 11, 2016 at 10:20:01AM -0500, Konrad Rzeszutek Wilk wrote:
> > > > On Fri, Mar 11, 2016 at 04:05:58PM +0100, Safa Hamza wrote:
> > >
> > > And please do not drop Xen-devel. Adding it back on.
> > >
> > > > > i did like u said but nothing change ..
> > > > >
> > > >
> > > > No you didn't. See below:
> > > > > U-Boot# setenv dom0_bootargs 'console=hvc0,115200n8 earlyprintk=xen
> > > debug'
> > > >
> > > > You still have 115200n8
> > >
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2016-03-11 16:02           ` help Konrad Rzeszutek Wilk
@ 2016-03-11 16:08             ` Safa Hamza
  2016-03-11 16:09             ` help Wei Liu
  1 sibling, 0 replies; 278+ messages in thread
From: Safa Hamza @ 2016-03-11 16:08 UTC (permalink / raw)
  To: xen-devel


[-- Attachment #1.1: Type: text/plain, Size: 2396 bytes --]

i did just like u said ...  a new error appears
******************************************************************************
U-Boot# fdt addr $dtb_addr_r
U-Boot# fdt resize
U-Boot# fdt set /chosen xen,xen-bootargs \"$xen_bootargs\"
U-Boot# fdt resize
U-Boot# fdt set /chosen xen,dom0-bootargs \"$dom0_bootargs\"
U-Boot# fdt resize
U-Boot# fdt mknode /chosen modules
U-Boot# fdt set /chosen/modules '#address-cells' <1>
U-Boot# fdt set /chosen/modules '#size-cells' <1>
U-Boot# fdt mknode /chosen/modules module@0
libfdt fdt_add_subnode(): FDT_ERR_NOSPACE
******************************************************************************
but when i wrote  fdt resize before  fdt mknode /chosen/modules module@0
this error disappear but still the execution stops as i mentioned before

On Fri, Mar 11, 2016 at 5:02 PM, Konrad Rzeszutek Wilk <
konrad.wilk@oracle.com> wrote:

> On Fri, Mar 11, 2016 at 04:47:47PM +0100, Safa Hamza wrote:
> > now i did just like u said ...  a new error appears
>
> Adding XEn-devel back. Please reply all.
>
> >
> ******************************************************************************
> > U-Boot# fdt addr $dtb_addr_r
> > U-Boot# fdt resize
> > U-Boot# fdt set /chosen xen,xen-bootargs \"$xen_bootargs\"
> > U-Boot# fdt resize
> > U-Boot# fdt set /chosen xen,dom0-bootargs \"$dom0_bootargs\"
> > U-Boot# fdt resize
> > U-Boot# fdt mknode /chosen modules
> > U-Boot# fdt set /chosen/modules '#address-cells' <1>
> > U-Boot# fdt set /chosen/modules '#size-cells' <1>
> > U-Boot# fdt mknode /chosen/modules module@0
> > libfdt fdt_add_subnode(): FDT_ERR_NOSPACE
> >
> ******************************************************************************
> > but when i wrote  fdt resize before  fdt mknode /chosen/modules module@0
> > this error disappear but still the execution stops as i mentioned before
> >
> > On Fri, Mar 11, 2016 at 4:20 PM, Konrad Rzeszutek Wilk <
> > konrad.wilk@oracle.com> wrote:
> >
> > > On Fri, Mar 11, 2016 at 10:20:01AM -0500, Konrad Rzeszutek Wilk wrote:
> > > > On Fri, Mar 11, 2016 at 04:05:58PM +0100, Safa Hamza wrote:
> > >
> > > And please do not drop Xen-devel. Adding it back on.
> > >
> > > > > i did like u said but nothing change ..
> > > > >
> > > >
> > > > No you didn't. See below:
> > > > > U-Boot# setenv dom0_bootargs 'console=hvc0,115200n8 earlyprintk=xen
> > > debug'
> > > >
> > > > You still have 115200n8
> > >
>

[-- Attachment #1.2: Type: text/html, Size: 3611 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
       [not found]         ` <CAFwQ9hE_erNA4uCCpdKwWRdZXRF39YJ=mqo6dbOpeWkNdipyTA@mail.gmail.com>
@ 2016-03-11 16:02           ` Konrad Rzeszutek Wilk
  2016-03-11 16:08             ` help Safa Hamza
  2016-03-11 16:09             ` help Wei Liu
  0 siblings, 2 replies; 278+ messages in thread
From: Konrad Rzeszutek Wilk @ 2016-03-11 16:02 UTC (permalink / raw)
  To: Safa Hamza, xen-devel

On Fri, Mar 11, 2016 at 04:47:47PM +0100, Safa Hamza wrote:
> now i did just like u said ...  a new error appears

Adding XEn-devel back. Please reply all.

> ******************************************************************************
> U-Boot# fdt addr $dtb_addr_r
> U-Boot# fdt resize
> U-Boot# fdt set /chosen xen,xen-bootargs \"$xen_bootargs\"
> U-Boot# fdt resize
> U-Boot# fdt set /chosen xen,dom0-bootargs \"$dom0_bootargs\"
> U-Boot# fdt resize
> U-Boot# fdt mknode /chosen modules
> U-Boot# fdt set /chosen/modules '#address-cells' <1>
> U-Boot# fdt set /chosen/modules '#size-cells' <1>
> U-Boot# fdt mknode /chosen/modules module@0
> libfdt fdt_add_subnode(): FDT_ERR_NOSPACE
> ******************************************************************************
> but when i wrote  fdt resize before  fdt mknode /chosen/modules module@0
> this error disappear but still the execution stops as i mentioned before
> 
> On Fri, Mar 11, 2016 at 4:20 PM, Konrad Rzeszutek Wilk <
> konrad.wilk@oracle.com> wrote:
> 
> > On Fri, Mar 11, 2016 at 10:20:01AM -0500, Konrad Rzeszutek Wilk wrote:
> > > On Fri, Mar 11, 2016 at 04:05:58PM +0100, Safa Hamza wrote:
> >
> > And please do not drop Xen-devel. Adding it back on.
> >
> > > > i did like u said but nothing change ..
> > > >
> > >
> > > No you didn't. See below:
> > > > U-Boot# setenv dom0_bootargs 'console=hvc0,115200n8 earlyprintk=xen
> > debug'
> > >
> > > You still have 115200n8
> >

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
       [not found]     ` <20160311152001.GJ5133@char.us.oracle.com>
@ 2016-03-11 15:20       ` Konrad Rzeszutek Wilk
       [not found]         ` <CAFwQ9hE_erNA4uCCpdKwWRdZXRF39YJ=mqo6dbOpeWkNdipyTA@mail.gmail.com>
  0 siblings, 1 reply; 278+ messages in thread
From: Konrad Rzeszutek Wilk @ 2016-03-11 15:20 UTC (permalink / raw)
  To: Safa Hamza, xen-devel

On Fri, Mar 11, 2016 at 10:20:01AM -0500, Konrad Rzeszutek Wilk wrote:
> On Fri, Mar 11, 2016 at 04:05:58PM +0100, Safa Hamza wrote:

And please do not drop Xen-devel. Adding it back on.

> > i did like u said but nothing change ..
> > 
> 
> No you didn't. See below:
> > U-Boot# setenv dom0_bootargs 'console=hvc0,115200n8 earlyprintk=xen debug'
> 
> You still have 115200n8

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2016-03-10 20:04 help Safa Hamza
@ 2016-03-11 14:49 ` Konrad Rzeszutek Wilk
       [not found]   ` <CAFwQ9hH6_7v57sw9c96GG=B9FdqFGn4WnDYO3RU5sLxEKQX7gg@mail.gmail.com>
  0 siblings, 1 reply; 278+ messages in thread
From: Konrad Rzeszutek Wilk @ 2016-03-11 14:49 UTC (permalink / raw)
  To: Safa Hamza; +Cc: xen-devel

On Thu, Mar 10, 2016 at 09:04:22PM +0100, Safa Hamza wrote:
> hello
> i'm trying to run xen on omap5 following
> this
> http://wiki.xenproject.org/wiki/Xen_ARM_with_Virtualization_Extensions/OMAP5432_uEVM
> 
> the execution stops at this point
> 
> **********************************************************************************************
> U-Boot SPL 2013.10-rc2 (Mar 08 2016 - 14:23:51)
> OMAP5432 ES2.0
> SPL: Please implement spl_start_uboot() for your board
> SPL: Direct Linux boot not active!
> reading u-boot.img
> reading u-boot.img
> 
> 
> U-Boot 2013.10-rc2 (Mar 08 2016 - 14:23:51)
> 
> CPU  : OMAP5432 ES2.0
> Board: OMAP5432 uEVM
> I2C:   ready
> DRAM:  2 GiB
> MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
> Using default environment
> 
> Net:   No ethernet found.
> Hit any key to stop autoboot:  0
> mmc0 is current device
> reading boot.scr
> ** Unable to read file boot.scr **
> reading uEnv.txt
> ** Unable to read file uEnv.txt **
> ** File not found /boot/zImage **
> U-Boot# setenv dtb_addr_r 0x825f0000
> U-Boot# setenv xen_addr_r 0x90000000
> U-Boot# setenv kernel_addr_r 0xa0000000
> U-Boot# setenv xen_bootargs 'sync_console console=dtuart dtuart=serial2'
> U-Boot# setenv dom0_bootargs 'console=hvc0,115200n8 earlyprintk=xen debug

That does not look right.

console=hvc0 earlyprintk=xen debug 

is more right.

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2016-03-10 20:04 Safa Hamza
  2016-03-11 14:49 ` help Konrad Rzeszutek Wilk
  0 siblings, 1 reply; 278+ messages in thread
From: Safa Hamza @ 2016-03-10 20:04 UTC (permalink / raw)
  To: xen-devel


[-- Attachment #1.1: Type: text/plain, Size: 6600 bytes --]

hello
i'm trying to run xen on omap5 following
this
http://wiki.xenproject.org/wiki/Xen_ARM_with_Virtualization_Extensions/OMAP5432_uEVM

the execution stops at this point

**********************************************************************************************
U-Boot SPL 2013.10-rc2 (Mar 08 2016 - 14:23:51)
OMAP5432 ES2.0
SPL: Please implement spl_start_uboot() for your board
SPL: Direct Linux boot not active!
reading u-boot.img
reading u-boot.img


U-Boot 2013.10-rc2 (Mar 08 2016 - 14:23:51)

CPU  : OMAP5432 ES2.0
Board: OMAP5432 uEVM
I2C:   ready
DRAM:  2 GiB
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
Using default environment

Net:   No ethernet found.
Hit any key to stop autoboot:  0
mmc0 is current device
reading boot.scr
** Unable to read file boot.scr **
reading uEnv.txt
** Unable to read file uEnv.txt **
** File not found /boot/zImage **
U-Boot# setenv dtb_addr_r 0x825f0000
U-Boot# setenv xen_addr_r 0x90000000
U-Boot# setenv kernel_addr_r 0xa0000000
U-Boot# setenv xen_bootargs 'sync_console console=dtuart dtuart=serial2'
U-Boot# setenv dom0_bootargs 'console=hvc0,115200n8 earlyprintk=xen debug
ignore_loglevel root=/dev/mmcblk0p2 rw rootwait fixrtc'
U-Boot# fatload mmc 0:1 $dtb_addr_r omap5-uevm.dtb
reading omap5-uevm.dtb
44836 bytes read in 7 ms (6.1 MiB/s)
U-Boot# fatload mmc 0:1 $xen_addr_r xen-uImage
reading xen-uImage
787372 bytes read in 43 ms (17.5 MiB/s)
U-Boot# fatload mmc 0:1 $kernel_addr_r zImage
reading zImage
4284248 bytes read in 213 ms (19.2 MiB/s)
U-Boot# fdt addr $dtb_addr_r
U-Boot# fdt resize
U-Boot# fdt set /chosen xen,xen-bootargs \"$xen_bootargs\"
U-Boot# fdt resize
U-Boot# fdt set /chosen xen,dom0-bootargs \"$dom0_bootargs\"
U-Boot# fdt resize
U-Boot# fdt mknode /chosen modules
U-Boot# fdt set /chosen/modules '#address-cells' <1>
U-Boot# fdt set /chosen/modules '#size-cells' <1>
U-Boot# fdt mknode /chosen/modules module@0
U-Boot# fdt set /chosen/modules/module@0 compatible xen,linux-zimage
xen,multiboot-module
U-Boot# fdt set /chosen/modules/module@0 reg <$kernel_addr_r 0xa00000>
U-Boot# bootm $xen_addr_r - $dtb_addr_r
## Booting kernel from Legacy Image at 90000000 ...
   Image Name:
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    787308 Bytes = 768.9 KiB
   Load Address: 80200000
   Entry Point:  80200000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 825f0000
   Booting using the fdt blob at 0x825f0000
   Loading Kernel Image ... OK
   reserving fdt memory region: addr=825f0000 size=c000
   Using Device Tree in place at 825f0000, end 825fefff

Starting kernel ...

- UART enabled -
- CPU 00000000 booting -
- Xen starting in Hyp mode -
- Zero BSS -
- Setting up control registers -
- Turning on paging -
- Ready -
(XEN) Checking for initrd in /chosen
(XEN) RAM: 0000000080000000 - 00000000feffffff
(XEN)
(XEN) MODULE[0]: 00000000825f0000 - 00000000825fc000 Device Tree
(XEN) MODULE[1]: 00000000a0000000 - 00000000a0a00000 Kernel
(XEN)  RESVD[0]: 00000000825f0000 - 00000000825fc000
(XEN)
(XEN) Command line: sync_console console=dtuart dtuart=serial2
(XEN) Placing Xen at 0x00000000fee00000-0x00000000ff000000
(XEN) Update BOOTMOD_XEN from 0000000080200000-0000000080305701 =>
00000000fee00000-00000000fef05701
(XEN) Xen heap: 00000000fa000000-00000000fe000000 (16384 pages)
(XEN) Dom heap: 503808 pages
(XEN) Domain heap initialised
(XEN) Platform: TI OMAP5
(XEN) Looking for dtuart at "serial2", options ""
 Xen 4.7-unstable
(XEN) Xen version 4.7-unstable (root@) (arm-linux-gnueabihf-gcc (Linaro GCC
2014.11) 4.9.3 20141031 (prerelease)) debug=y Tue Mar  1 15:02:30 CET 2016
(XEN) Latest ChangeSet: Sun Feb 28 16:03:51 2016 -0500 git:42391c6
(XEN) Console output is synchronous.
(XEN) Processor: 412fc0f2: "ARM Limited", variant: 0x2, part 0xc0f, rev 0x2
(XEN) 32-bit Execution:
(XEN)   Processor Features: 00001131:00011011
(XEN)     Instruction Sets: AArch32 A32 Thumb Thumb-2 ThumbEE Jazelle
(XEN)     Extensions: GenericTimer Security
(XEN)   Debug Features: 02010555
(XEN)   Auxiliary Features: 00000000
(XEN)   Memory Model Features: 10201105 20000000 01240000 02102211
(XEN)  ISA Features: 02101110 13112111 21232041 11112131 10011142 00000000
(XEN) Set AuxCoreBoot1 to 00000000fee0004c (0020004c)
(XEN) Set AuxCoreBoot0 to 0x20
(XEN) Generic Timer IRQ: phys=30 hyp=26 virt=27 Freq: 6144 KHz
(XEN) GICv2: WARNING: The GICC size is too small: 0x1000 expected 0x2000
(XEN) GICv2 initialization:
(XEN)         gic_dist_addr=0000000048211000
(XEN)         gic_cpu_addr=0000000048212000
(XEN)         gic_hyp_addr=0000000048214000
(XEN)         gic_vcpu_addr=0000000048216000
(XEN)         gic_maintenance_irq=25
(XEN) GICv2: 192 lines, 2 cpus, secure (IID 0000043b).
(XEN) Using scheduler: SMP Credit Scheduler (credit)
(XEN) Allocated console ring of 16 KiB.
(XEN) VFP implementer 0x41 architecture 4 part 0x30 variant 0xf rev 0x0
(XEN) Bringing up CPU1
- CPU 00000001 booting -
- Xen starting in Hyp mode -
- Setting up control registers -
- Turning on paging -
- Ready -
(XEN) CPU 1 booted.
(XEN) Brought up 2 CPUs
(XEN) P2M: 40-bit IPA
(XEN) P2M: 3 levels with order-1 root, VTCR 0x80003558
(XEN) I/O virtualisation disabled
(XEN) *** LOADING DOMAIN 0 ***
(XEN) Loading kernel from boot module @ 00000000a0000000
(XEN) Allocating 1:1 mappings totalling 128MB for dom0:
(XEN) BANK[0] 0x000000a8000000-0x000000b0000000 (128MB)
(XEN) Grant table range: 0x000000fee00000-0x000000fee63000
(XEN) Loading zImage from 00000000a0000000 to
00000000afa00000-00000000afe15f58
(XEN) Allocating PPI 16 for event channel interrupt
(XEN) Loading dom0 DTB to 0x00000000af800000-0x00000000af80aece
(XEN) Scrubbing Free RAM on 1 nodes using 2 CPUs
(XEN) ........done.
(XEN) Initial low memory virq threshold set at 0x4000 pages.
(XEN) Std. Loglevel: All
(XEN) Guest Loglevel: All
(XEN) **********************************************
(XEN) ******* WARNING: CONSOLE OUTPUT IS SYNCHRONOUS
(XEN) ******* This option is intended to aid debugging of Xen by ensuring
(XEN) ******* that all output is synchronously delivered on the serial line.
(XEN) ******* However it can introduce SIGNIFICANT latencies and affect
(XEN) ******* timekeeping. It is NOT recommended for production use!
(XEN) **********************************************
(XEN) 3... 2... 1...
(XEN) *** Serial input -> DOM0 (type 'CTRL-a' three times to switch input
to Xen)
(XEN) Freed 280kB init memory.


**********************************************************************************************
nothing appears after    (XEN) Freed 280kB init memory.  .. i don't know
where is the problem

. i'll appreciate your help
thanks

[-- Attachment #1.2: Type: text/html, Size: 16177 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2015-11-02  8:22 Help Almeida, Gabriel
  2015-11-02 17:38 ` Help Michael Wood
@ 2015-11-30  7:31 ` Almeida, Gabriel
  1 sibling, 0 replies; 278+ messages in thread
From: Almeida, Gabriel @ 2015-11-30  7:31 UTC (permalink / raw)
  To: 'bitbake-devel@lists.openembedded.org'

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



From: Almeida, Gabriel
Sent: Montag, 2. November 2015 09:23
To: bitbake-devel@lists.openembedded.org
Subject: Help

Hello there,

I want to setup toaster on my VM and I have followed the steps up to (3.1.1 - Step 5):
https://www.yoctoproject.org/docs/1.9/toaster-manual/toaster-manual.html#setting-up-locally-and-running-in-analysis-mode

Where I got the following error...

Toaster is already running and I am able to access it over the web (localhost:8000), however while bitbaking, I am getting the following error:

```
(venv)yoctoadm@kickseed:~/poky/build (fido)*$ bitbake core-image-minimal
Traceback (most recent call last):
  File "/home/yoctoadm/poky/bitbake/bin/bitbake", line 41, in <module>
    cookerdata.CookerConfiguration())
  File "/home/yoctoadm/poky/bitbake/lib/bb/main.py", line 383, in bitbake_main
    return ui_module.main(server_connection.connection, server_connection.events, configParams)
  File "/home/yoctoadm/poky/bitbake/lib/bb/ui/knotty.py", line 287, in main
    params.updateToServer(server, os.environ.copy())
  File "/home/yoctoadm/poky/bitbake/lib/bb/cookerdata.py", line 79, in updateToServer
    ret, error = server.runCommand(["updateConfig", options, environment])
  File "/usr/lib/python2.7/xmlrpclib.py", line 1233, in __call__
    return self.__send(self.__name, args)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1587, in __request
    verbose=self.__verbose
  File "/usr/lib/python2.7/xmlrpclib.py", line 1273, in request
    return self.single_request(host, handler, request_body, verbose)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1306, in single_request
    return self.parse_response(response)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1482, in parse_response
    return u.close()
  File "/usr/lib/python2.7/xmlrpclib.py", line 794, in close
    raise Fault(**self._stack[0])
Fault: <Fault 1: "<class 'xml.parsers.expat.ExpatError'>:not well-formed (invalid token): line 115, column 120">
```

```
(venv)yoctoadm@kickseed:~/poky/build (fido)*$

BitBake Build Tool Core version 1.26.0, bitbake version 1.26.0
```

BR
Gabriel




[-- Attachment #2: Type: text/html, Size: 8606 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
@ 2015-11-24 14:40 Almeida, Gabriel
  0 siblings, 0 replies; 278+ messages in thread
From: Almeida, Gabriel @ 2015-11-24 14:40 UTC (permalink / raw)
  To: Almeida, Gabriel, bitbake-devel

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



From: Almeida, Gabriel
Sent: Montag, 2. November 2015 09:23
To: 'bitbake-devel@lists.openembedded.org'
Subject: Help

Hello there,

I want to setup toaster on my VM and I have followed the steps up to (3.1.1 - Step 5):
https://www.yoctoproject.org/docs/1.9/toaster-manual/toaster-manual.html#setting-up-locally-and-running-in-analysis-mode

Where I got the following error...

Toaster is already running and I am able to access it over the web (localhost:8000), however while bitbaking, I am getting the following error:

```
(venv)yoctoadm@kickseed:~/poky/build (fido)*$ bitbake core-image-minimal
Traceback (most recent call last):
  File "/home/yoctoadm/poky/bitbake/bin/bitbake", line 41, in <module>
    cookerdata.CookerConfiguration())
  File "/home/yoctoadm/poky/bitbake/lib/bb/main.py", line 383, in bitbake_main
    return ui_module.main(server_connection.connection, server_connection.events, configParams)
  File "/home/yoctoadm/poky/bitbake/lib/bb/ui/knotty.py", line 287, in main
    params.updateToServer(server, os.environ.copy())
  File "/home/yoctoadm/poky/bitbake/lib/bb/cookerdata.py", line 79, in updateToServer
    ret, error = server.runCommand(["updateConfig", options, environment])
  File "/usr/lib/python2.7/xmlrpclib.py", line 1233, in __call__
    return self.__send(self.__name, args)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1587, in __request
    verbose=self.__verbose
  File "/usr/lib/python2.7/xmlrpclib.py", line 1273, in request
    return self.single_request(host, handler, request_body, verbose)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1306, in single_request
    return self.parse_response(response)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1482, in parse_response
    return u.close()
  File "/usr/lib/python2.7/xmlrpclib.py", line 794, in close
    raise Fault(**self._stack[0])
Fault: <Fault 1: "<class 'xml.parsers.expat.ExpatError'>:not well-formed (invalid token): line 115, column 120">
```

```
(venv)yoctoadm@kickseed:~/poky/build (fido)*$

BitBake Build Tool Core version 1.26.0, bitbake version 1.26.0
```

BR
Gabriel




[-- Attachment #2: Type: text/html, Size: 8608 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2015-11-23 18:31 Carlos Palminha
  0 siblings, 0 replies; 278+ messages in thread
From: Carlos Palminha @ 2015-11-23 18:31 UTC (permalink / raw)
  To: linux-snps-arc



^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2015-11-02  8:22 Help Almeida, Gabriel
@ 2015-11-02 17:38 ` Michael Wood
  2015-11-30  7:31 ` Help Almeida, Gabriel
  1 sibling, 0 replies; 278+ messages in thread
From: Michael Wood @ 2015-11-02 17:38 UTC (permalink / raw)
  To: bitbake-devel

On 02/11/15 08:22, Almeida, Gabriel wrote:
>
> Hello there,
>
> I want to setup toaster on my VM and I have followed the steps up to 
> (3.1.1 - Step 5):
>
> https://www.yoctoproject.org/docs/1.9/toaster-manual/toaster-manual.html#setting-up-locally-and-running-in-analysis-mode
>
> Where I got the following error...
>
> Toaster is already running and I am able to access it over the web 
> (localhost:8000), however while bitbaking, I am getting the following 
> error:
>
> ```
>
> (venv)yoctoadm@kickseed:~/poky/build (fido)*$ bitbake core-image-minimal
>
> Traceback (most recent call last):
>
>   File "/home/yoctoadm/poky/bitbake/bin/bitbake", line 41, in <module>
>
> cookerdata.CookerConfiguration())
>
>   File "/home/yoctoadm/poky/bitbake/lib/bb/main.py", line 383, in 
> bitbake_main
>
>     return ui_module.main(server_connection.connection, 
> server_connection.events, configParams)
>
>   File "/home/yoctoadm/poky/bitbake/lib/bb/ui/knotty.py", line 287, in 
> main
>
> params.updateToServer(server, os.environ.copy())
>
>   File "/home/yoctoadm/poky/bitbake/lib/bb/cookerdata.py", line 79, in 
> updateToServer
>
>     ret, error = server.runCommand(["updateConfig", options, environment])
>
>   File "/usr/lib/python2.7/xmlrpclib.py", line 1233, in __call__
>
>     return self.__send(self.__name, args)
>
>   File "/usr/lib/python2.7/xmlrpclib.py", line 1587, in __request
>
> verbose=self.__verbose
>
>   File "/usr/lib/python2.7/xmlrpclib.py", line 1273, in request
>
>     return self.single_request(host, handler, request_body, verbose)
>
>   File "/usr/lib/python2.7/xmlrpclib.py", line 1306, in single_request
>
>     return self.parse_response(response)
>
>   File "/usr/lib/python2.7/xmlrpclib.py", line 1482, in parse_response
>
>     return u.close()
>
>   File "/usr/lib/python2.7/xmlrpclib.py", line 794, in close
>
>     raise Fault(**self._stack[0])
>
> Fault: <Fault 1: "<class 'xml.parsers.expat.ExpatError'>:not 
> well-formed (invalid token): line 115, column 120">
>
> ```
>

Is there anything in your environment/configuration which may mean that 
invalid characters for XML are trying to be written? Such as control 
characters?

Michael




^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
@ 2015-11-02  8:22 Almeida, Gabriel
  2015-11-02 17:38 ` Help Michael Wood
  2015-11-30  7:31 ` Help Almeida, Gabriel
  0 siblings, 2 replies; 278+ messages in thread
From: Almeida, Gabriel @ 2015-11-02  8:22 UTC (permalink / raw)
  To: bitbake-devel

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

Hello there,

I want to setup toaster on my VM and I have followed the steps up to (3.1.1 - Step 5):
https://www.yoctoproject.org/docs/1.9/toaster-manual/toaster-manual.html#setting-up-locally-and-running-in-analysis-mode

Where I got the following error...

Toaster is already running and I am able to access it over the web (localhost:8000), however while bitbaking, I am getting the following error:

```
(venv)yoctoadm@kickseed:~/poky/build (fido)*$ bitbake core-image-minimal
Traceback (most recent call last):
  File "/home/yoctoadm/poky/bitbake/bin/bitbake", line 41, in <module>
    cookerdata.CookerConfiguration())
  File "/home/yoctoadm/poky/bitbake/lib/bb/main.py", line 383, in bitbake_main
    return ui_module.main(server_connection.connection, server_connection.events, configParams)
  File "/home/yoctoadm/poky/bitbake/lib/bb/ui/knotty.py", line 287, in main
    params.updateToServer(server, os.environ.copy())
  File "/home/yoctoadm/poky/bitbake/lib/bb/cookerdata.py", line 79, in updateToServer
    ret, error = server.runCommand(["updateConfig", options, environment])
  File "/usr/lib/python2.7/xmlrpclib.py", line 1233, in __call__
    return self.__send(self.__name, args)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1587, in __request
    verbose=self.__verbose
  File "/usr/lib/python2.7/xmlrpclib.py", line 1273, in request
    return self.single_request(host, handler, request_body, verbose)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1306, in single_request
    return self.parse_response(response)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1482, in parse_response
    return u.close()
  File "/usr/lib/python2.7/xmlrpclib.py", line 794, in close
    raise Fault(**self._stack[0])
Fault: <Fault 1: "<class 'xml.parsers.expat.ExpatError'>:not well-formed (invalid token): line 115, column 120">
```

```
(venv)yoctoadm@kickseed:~/poky/build (fido)*$

BitBake Build Tool Core version 1.26.0, bitbake version 1.26.0
```

BR
Gabriel




[-- Attachment #2: Type: text/html, Size: 7583 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
  2015-09-30  9:41 ` Help Mulyadi Santosa
@ 2015-10-05 18:00   ` Prem Kumar
  0 siblings, 0 replies; 278+ messages in thread
From: Prem Kumar @ 2015-10-05 18:00 UTC (permalink / raw)
  To: kernelnewbies

Dear Mulyadi,

Thank you for your response. And apologies for being impolite.

On AnonHugePages, I do not allocate them, some application is doing that in
our cluster and I have no way to tell which application it is, unless I can
hook up monitoring tools one each compute nodes that keeps track of which
application is allocating huge pages. Not sure if I even know how to do
that. Any hints will be helpful.

-regards!!
Prem

On Wed, Sep 30, 2015 at 4:41 AM, Mulyadi Santosa <mulyadi.santosa@gmail.com>
wrote:

>
>
> On Fri, Sep 25, 2015 at 10:14 PM, Prem Kumar <prem.it.kumar@gmail.com>
> wrote:
>
>> Dear Mulyadi,
>>
>> Sorry for sending direct email. I am at a deadlock pulling my hairs and
>> can't seem to figure out (
>> http://lists.kernelnewbies.org/pipermail/kernelnewbies/2015-September/015111.html)
>> how to reclaim the AnonHugePage allocations when only system services are
>> running on them. Reboot is an option but too many nodes and this happening
>> frequently i need to know an alternate way out.
>>
>> Any help is greatly appreciated.
>> Regards,
>> Prem
>>
>>
>>
> Dear Prem
>
> Sorry that I can not promptly answer any question these days.
>
> My quick conclusion is that, since you said you alocate huge page above,
> then I guess huge page has different reclaim policy, that's why it might
> not be released when your application terminated. maybe you forgot to
> explicitly release them?
>
> All in all, I appreciate you ask my help, but next time please make sure
> that person is inviting you for direct discussion first, so you won't be
> considered as impolite.
>
>
>
>
> --
> regards,
>
> Mulyadi Santosa
> Freelance Linux trainer and consultant
>
> blog: the-hydra.blogspot.com
> training: mulyaditraining.blogspot.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20151005/08169ea1/attachment.html 

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
       [not found] <CAD-PXq+fMXjH3r==9wDBRn0U37HLmkfWPT7JPh+82OWQEqph-w@mail.gmail.com>
@ 2015-09-30  9:41 ` Mulyadi Santosa
  2015-10-05 18:00   ` Help Prem Kumar
  0 siblings, 1 reply; 278+ messages in thread
From: Mulyadi Santosa @ 2015-09-30  9:41 UTC (permalink / raw)
  To: kernelnewbies

On Fri, Sep 25, 2015 at 10:14 PM, Prem Kumar <prem.it.kumar@gmail.com>
wrote:

> Dear Mulyadi,
>
> Sorry for sending direct email. I am at a deadlock pulling my hairs and
> can't seem to figure out (
> http://lists.kernelnewbies.org/pipermail/kernelnewbies/2015-September/015111.html)
> how to reclaim the AnonHugePage allocations when only system services are
> running on them. Reboot is an option but too many nodes and this happening
> frequently i need to know an alternate way out.
>
> Any help is greatly appreciated.
> Regards,
> Prem
>
>
>
Dear Prem

Sorry that I can not promptly answer any question these days.

My quick conclusion is that, since you said you alocate huge page above,
then I guess huge page has different reclaim policy, that's why it might
not be released when your application terminated. maybe you forgot to
explicitly release them?

All in all, I appreciate you ask my help, but next time please make sure
that person is inviting you for direct discussion first, so you won't be
considered as impolite.




-- 
regards,

Mulyadi Santosa
Freelance Linux trainer and consultant

blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20150930/c895df81/attachment.html 

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2015-07-23 15:05 Help Akash Talole
@ 2015-07-24  7:46 ` Wei Liu
  0 siblings, 0 replies; 278+ messages in thread
From: Wei Liu @ 2015-07-24  7:46 UTC (permalink / raw)
  To: Akash Talole; +Cc: wei.liu2, xen-devel

On Thu, Jul 23, 2015 at 08:35:20PM +0530, Akash Talole wrote:
> Hello,
> 
> Issue in tapdisk-vbd.c
> 
> Why td_queue_write(parent,treq); is called in  static void
> __tapdisk_vbd_reissue_td_request(td_vbd_t *vbd,td_image_t *image,
> td_request_t treq) function as we can't write in parent vhd because it is
> read only.
> 
> I have attached the code of tapdisk-vbd.c and block-vhd.c.
> 

There is no need to attach the code. We all have that in our repository.
:-)

> And please tell me about how to write into child vhd after reading from
> parent vhd in block-vhd.c in case of VHD_BM_BIT_CLEAR in function
> vhd_queue_read().
> 

Please describe what your end goal is so that developers with knowledge
in that area can help you better.

  http://wiki.xenproject.org/wiki/Asking_Developer_Questions

Wei.

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
@ 2015-07-23 15:05 Akash Talole
  2015-07-24  7:46 ` Help Wei Liu
  0 siblings, 1 reply; 278+ messages in thread
From: Akash Talole @ 2015-07-23 15:05 UTC (permalink / raw)
  To: xen-devel


[-- Attachment #1.1: Type: text/plain, Size: 468 bytes --]

Hello,

Issue in tapdisk-vbd.c

Why td_queue_write(parent,treq); is called in  static void
__tapdisk_vbd_reissue_td_request(td_vbd_t *vbd,td_image_t *image,
td_request_t treq) function as we can't write in parent vhd because it is
read only.

I have attached the code of tapdisk-vbd.c and block-vhd.c.

And please tell me about how to write into child vhd after reading from
parent vhd in block-vhd.c in case of VHD_BM_BIT_CLEAR in function
vhd_queue_read().

Thanks.

[-- Attachment #1.2: Type: text/html, Size: 627 bytes --]

[-- Attachment #2: tapdisk-vbd.c --]
[-- Type: text/x-csrc, Size: 39857 bytes --]

/*
 * Copyright (C) Citrix Systems Inc.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; version 2.1 only
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include <regex.h>
#include <unistd.h>
#include <stdlib.h>
#include <libgen.h>
#include <sys/mman.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <sys/types.h>

#include "debug.h"
#include "libvhd.h"
#include "tapdisk-blktap.h"
#include "tapdisk-image.h"
#include "tapdisk-driver.h"
#include "tapdisk-server.h"
#include "tapdisk-vbd.h"
#include "tapdisk-disktype.h"
#include "tapdisk-interface.h"
#include "tapdisk-stats.h"
#include "tapdisk-storage.h"
#include "tapdisk-nbdserver.h"
#include "td-stats.h"
#include "tapdisk-utils.h"
#include "md5.h"

#define DBG(_level, _f, _a...) tlog_write(_level, _f, ##_a)
#define ERR(_err, _f, _a...) tlog_error(_err, _f, ##_a)

#define INFO(_f, _a...)            tlog_syslog(TLOG_INFO, "vbd: " _f, ##_a)
#define ERROR(_f, _a...)           tlog_syslog(TLOG_WARN, "vbd: " _f, ##_a)

#define TD_VBD_EIO_RETRIES          10
#define TD_VBD_EIO_SLEEP            1
#define TD_VBD_WATCHDOG_TIMEOUT     10

static void tapdisk_vbd_complete_vbd_request(td_vbd_t *, td_vbd_request_t *);
static int  tapdisk_vbd_queue_ready(td_vbd_t *);
static void tapdisk_vbd_check_queue_state(td_vbd_t *);

/*
 * initialization
 */

static void
tapdisk_vbd_mark_progress(td_vbd_t *vbd)
{
	gettimeofday(&vbd->ts, NULL);
}

td_vbd_t*
tapdisk_vbd_create(uint16_t uuid)
{
	td_vbd_t *vbd;

	vbd = calloc(1, sizeof(td_vbd_t));
	if (!vbd) {
		EPRINTF("failed to allocate tapdisk state\n");
		return NULL;
	}

    shm_init(&vbd->rrd.shm);

	vbd->uuid        = uuid;
	vbd->req_timeout = TD_VBD_REQUEST_TIMEOUT;

	INIT_LIST_HEAD(&vbd->images);
	INIT_LIST_HEAD(&vbd->new_requests);
	INIT_LIST_HEAD(&vbd->pending_requests);
	INIT_LIST_HEAD(&vbd->failed_requests);
	INIT_LIST_HEAD(&vbd->completed_requests);
	INIT_LIST_HEAD(&vbd->next);
    INIT_LIST_HEAD(&vbd->rings);
    INIT_LIST_HEAD(&vbd->dead_rings);
	tapdisk_vbd_mark_progress(vbd);

	return vbd;
}

int
tapdisk_vbd_initialize(int rfd, int wfd, uint16_t uuid)
{
	td_vbd_t *vbd;

	vbd = tapdisk_server_get_vbd(uuid);
	if (vbd) {
		EPRINTF("duplicate vbds! %u\n", uuid);
		return -EEXIST;
	}

	vbd = tapdisk_vbd_create(uuid);

	tapdisk_server_add_vbd(vbd);

	return 0;
}

static inline void
tapdisk_vbd_add_image(td_vbd_t *vbd, td_image_t *image)
{
	list_add_tail(&image->next, &vbd->images);
}

static inline int
tapdisk_vbd_is_last_image(td_vbd_t *vbd, td_image_t *image)
{
	return list_is_last(&image->next, &vbd->images);
}

static inline td_image_t *
tapdisk_vbd_first_image(td_vbd_t *vbd)
{
	td_image_t *image = NULL;
	if (!list_empty(&vbd->images))
		image = list_entry(vbd->images.next, td_image_t, next);
	return image;
}

static inline td_image_t *
tapdisk_vbd_last_image(td_vbd_t *vbd)
{
	td_image_t *image = NULL;
	if (!list_empty(&vbd->images))
		image = list_entry(vbd->images.prev, td_image_t, next);
	return image;
}

static inline td_image_t *
tapdisk_vbd_next_image(td_image_t *image)
{
	return list_entry(image->next.next, td_image_t, next);
}

static int
tapdisk_vbd_validate_chain(td_vbd_t *vbd)
{
	return tapdisk_image_validate_chain(&vbd->images);
}

static int
vbd_stats_destroy(td_vbd_t *vbd) {

    int err = 0;

    ASSERT(vbd);

    err = shm_destroy(&vbd->rrd.shm);
    if (unlikely(err)) {
        EPRINTF("failed to destroy RRD file: %s\n", strerror(err));
        goto out;
    }

    free(vbd->rrd.shm.path);
    vbd->rrd.shm.path = NULL;

out:
    return -err;
}

static int
vbd_stats_create(td_vbd_t *vbd) {

    int err;

    ASSERT(vbd);

	err = mkdir("/dev/shm/metrics", S_IRUSR | S_IWUSR);
	if (likely(err)) {
        err = errno;
        if (unlikely(err != EEXIST))
    		goto out;
        else
            err = 0;
    }

    /*
     * FIXME Rename this to something like "vbd3-domid-devid". Consider
     * consolidating this with the io_ring shared memory file. Check if blkback
     * exports the same information in some sysfs file and if so move this to
     * the ring location.
     */
    err = asprintf(&vbd->rrd.shm.path, "/dev/shm/metrics/tap-%d-%d", getpid(),
            vbd->uuid);
    if (err == -1) {
        err = errno;
        vbd->rrd.shm.path = NULL;
        EPRINTF("failed to create metric file: %s\n", strerror(err));
        goto out;
    }
    err = 0;

    vbd->rrd.shm.size = PAGE_SIZE;
    err = shm_create(&vbd->rrd.shm);
    if (err)
        EPRINTF("failed to create RRD: %s\n", strerror(err));

out:
    if (err) {
        int err2 = vbd_stats_destroy(vbd);
        if (err2)
            EPRINTF("failed to clean up failed RRD shared memory creation: "
                    "%s (error ignored)\n", strerror(-err2));
    }
    return -err;
}

void
tapdisk_vbd_close_vdi(td_vbd_t *vbd)
{
    int err;

    err = vbd_stats_destroy(vbd);
    if (err) {
        EPRINTF("failed to destroy RRD stats file: %s (error ignored)\n",
                strerror(-err));
    }

	tapdisk_image_close_chain(&vbd->images);

	if (vbd->secondary &&
	    vbd->secondary_mode != TD_VBD_SECONDARY_MIRROR) {
		tapdisk_image_close(vbd->secondary);
		vbd->secondary = NULL;
	}

	if (vbd->retired) {
		tapdisk_image_close(vbd->retired);
		vbd->retired = NULL;
	}

	td_flag_set(vbd->state, TD_VBD_CLOSED);
}

static int
tapdisk_vbd_add_block_cache(td_vbd_t *vbd)
{
	td_image_t *cache, *image, *target, *tmp;
	int err;

	target = NULL;

	tapdisk_vbd_for_each_image(vbd, image, tmp)
		if (td_flag_test(image->flags, TD_OPEN_RDONLY) &&
		    td_flag_test(image->flags, TD_OPEN_SHAREABLE)) {
			target = image;
			break;
		}

	if (!target)
		return 0;

	cache = tapdisk_image_allocate(target->name,
				       DISK_TYPE_BLOCK_CACHE,
				       target->flags);
	if (!cache)
		return -ENOMEM;

	/* try to load existing cache */
	err = td_load(cache);
	if (!err)
		goto done;

	/* hack driver to send open() correct image size */
	if (!target->driver) {
		err = -ENODEV;
		goto fail;
	}

	cache->driver = tapdisk_driver_allocate(cache->type,
						cache->name,
						cache->flags);
	if (!cache->driver) {
		err = -ENOMEM;
		goto fail;
	}

	cache->driver->info = target->driver->info;

	/* try to open new cache */
	err = td_open(cache);
	if (!err)
		goto done;

fail:
	/* give up */
	tapdisk_image_free(target);
	return err;

done:
	/* insert cache before image */
	list_add(&cache->next, target->next.prev);
	return 0;
}

static int
tapdisk_vbd_add_local_cache(td_vbd_t *vbd)
{
	td_image_t *cache, *parent;
	int err;

	parent = tapdisk_vbd_first_image(vbd);
	if (tapdisk_vbd_is_last_image(vbd, parent)) {
		DPRINTF("Single-image chain, nothing to cache");
		return 0;
	}

	cache = tapdisk_image_allocate(parent->name,
				       DISK_TYPE_LCACHE,
				       parent->flags);

	if (!cache)
		return -ENOMEM;

	/* try to load existing cache */
	err = td_load(cache);
	if (!err)
		goto done;

	cache->driver = tapdisk_driver_allocate(cache->type,
						cache->name,
						cache->flags);
	if (!cache->driver) {
		err = -ENOMEM;
		goto fail;
	}

	cache->driver->info = parent->driver->info;

	/* try to open new cache */
	err = td_open(cache);
	if (!err)
		goto done;

fail:
	tapdisk_image_free(cache);
	return err;

done:
	/* insert cache right above leaf image */
	list_add(&cache->next, &parent->next);

	DPRINTF("Added local_cache driver\n");
	return 0;
}

int
tapdisk_vbd_add_secondary(td_vbd_t *vbd)
{
	td_image_t *leaf, *second = NULL;
	const char *path;
	int type, err;

	if (strcmp(vbd->secondary_name, "null") == 0) {
		DPRINTF("Removing secondary image\n");
		vbd->secondary_mode = TD_VBD_SECONDARY_DISABLED;
		vbd->secondary = NULL;
		vbd->nbd_mirror_failed = 0;
		return 0;
	}

	DPRINTF("Adding secondary image: %s\n", vbd->secondary_name);

	type = tapdisk_disktype_parse_params(vbd->secondary_name, &path);
	if (type < 0)
		return type;

	leaf = tapdisk_vbd_first_image(vbd);
	if (!leaf) {
		err = -EINVAL;
		goto fail;
	}

	err = tapdisk_image_open(type, path, leaf->flags, &second);
	if (err) {
		if (type == DISK_TYPE_NBD)
			vbd->nbd_mirror_failed = 1;

		vbd->secondary=NULL;
		vbd->secondary_mode=TD_VBD_SECONDARY_DISABLED;
		
		goto fail;
	}

	if (second->info.size != leaf->info.size) {
		EPRINTF("Secondary image size %"PRIu64" != image size %"PRIu64"\n",
			second->info.size, leaf->info.size);
		err = -EINVAL;
		goto fail;
	}

	vbd->secondary = second;
	leaf->flags |= TD_IGNORE_ENOSPC;
	if (td_flag_test(vbd->flags, TD_OPEN_STANDBY)) {
		DPRINTF("In standby mode\n");
		vbd->secondary_mode = TD_VBD_SECONDARY_STANDBY;
	} else {
		DPRINTF("In mirror mode\n");
		vbd->secondary_mode = TD_VBD_SECONDARY_MIRROR;
		/*
		 * we actually need this image to also be part of the chain, 
		 * since it may already contain data
		 */
		list_add(&second->next, &leaf->next);
	}

	DPRINTF("Added secondary image\n");
	return 0;

fail:
	if (second)
		tapdisk_image_close(second);
	return err;
}

static void signal_enospc(td_vbd_t *vbd)
{
	int fd, err;
	char *fn;

	err = asprintf(&fn, BLKTAP2_ENOSPC_SIGNAL_FILE"%d", vbd->tap->minor);
	if (err == -1) {
		EPRINTF("Failed to signal ENOSPC condition\n");
		return;
	}

	fd = open(fn, O_WRONLY | O_CREAT | O_NONBLOCK, 0666);
	if (fd == -1)
		EPRINTF("Failed to open file to signal ENOSPC condition\n");
	else
		close(fd);

	free(fn);
}

#if 0
static int
tapdisk_vbd_open_index(td_vbd_t *vbd)
{
	int err;
	char *path;
	td_flag_t flags;
	td_image_t *last, *image;

	last = tapdisk_vbd_last_image(vbd);
	err  = asprintf(&path, "%s.bat", last->name);
	if (err == -1)
		return -errno;

	err = access(path, R_OK);
	if (err == -1) {
		free(path);
		return -errno;
	}

	flags = vbd->flags | TD_OPEN_RDONLY | TD_OPEN_SHAREABLE;
	image = tapdisk_image_allocate(path, DISK_TYPE_VINDEX, flags);
	if (!image) {
		err = -ENOMEM;
		goto fail;
	}

	err = td_open(image);
	if (err)
		goto fail;

	tapdisk_vbd_add_image(vbd, image);
	return 0;

fail:
	if (image)
		tapdisk_image_free(image);
	free(path);
	return err;
}
#endif

static int
tapdisk_vbd_add_dirty_log(td_vbd_t *vbd)
{
	int err;
	td_driver_t *driver;
	td_image_t *log, *parent;

	driver = NULL;
	log    = NULL;

	parent = tapdisk_vbd_first_image(vbd);

	log    = tapdisk_image_allocate(parent->name,
					DISK_TYPE_LOG,
					parent->flags);
	if (!log)
		return -ENOMEM;

	driver = tapdisk_driver_allocate(log->type,
					 log->name,
					 log->flags);
	if (!driver) {
		err = -ENOMEM;
		goto fail;
	}

	driver->info = parent->driver->info;
	log->driver  = driver;

	err = td_open(log);
	if (err)
		goto fail;

	tapdisk_vbd_add_image(vbd, log);
	return 0;

fail:
	tapdisk_image_free(log);
	return err;
}

int
tapdisk_vbd_open_vdi(td_vbd_t *vbd, const char *name, td_flag_t flags, int prt_devnum)
{
	char *tmp = vbd->name;
	int err;

	if (!list_empty(&vbd->images)) {
		err = -EBUSY;
		goto fail;
	}

	if (!name && !vbd->name) {
		err = -EINVAL;
		goto fail;
	}

	if (name) {
		vbd->name = strdup(name);
		if (!vbd->name) {
			err = -errno;
			goto fail;
		}
	}

	err = tapdisk_image_open_chain(vbd->name, flags, prt_devnum, &vbd->images);
	if (err)
		goto fail;

	td_flag_clear(vbd->state, TD_VBD_CLOSED);
	vbd->flags = flags;

	if (td_flag_test(vbd->flags, TD_OPEN_LOG_DIRTY)) {
		err = tapdisk_vbd_add_dirty_log(vbd);
		if (err)
			goto fail;
	}

	if (td_flag_test(vbd->flags, TD_OPEN_ADD_CACHE)) {
		err = tapdisk_vbd_add_block_cache(vbd);
		if (err)
			goto fail;
	}

	if (td_flag_test(vbd->flags, TD_OPEN_LOCAL_CACHE)) {
		err = tapdisk_vbd_add_local_cache(vbd);
		if (err)
			goto fail;
	}

	err = tapdisk_vbd_validate_chain(vbd);
	if (err)
		goto fail;

	if (td_flag_test(vbd->flags, TD_OPEN_SECONDARY)) {
		err = tapdisk_vbd_add_secondary(vbd);
		if (err) {
			if (vbd->nbd_mirror_failed != 1)
				goto fail;
			INFO("Ignoring failed NBD secondary attach\n");
			err = 0;
		}
	}

    err = vbd_stats_create(vbd);
    if (err)
        goto fail;

	if (tmp != vbd->name)
		free(tmp);

	return err;

fail:
	if (vbd->name != tmp) {
		free(vbd->name);
		vbd->name = tmp;
	}

	if (!list_empty(&vbd->images))
		tapdisk_image_close_chain(&vbd->images);

	vbd->flags = 0;

	return err;
}

void
tapdisk_vbd_detach(td_vbd_t *vbd)
{
	td_blktap_t *tap = vbd->tap;

	if (tap) {
		tapdisk_blktap_close(tap);
		vbd->tap = NULL;
	}
}

int
tapdisk_vbd_attach(td_vbd_t *vbd, const char *devname, int minor)
{

	if (vbd->tap)
		return -EALREADY;

	return tapdisk_blktap_open(devname, vbd, &vbd->tap);
}

/*
int
tapdisk_vbd_open(td_vbd_t *vbd, const char *name,
		 int minor, const char *ring, td_flag_t flags)
{
	int err;

	err = tapdisk_vbd_open_vdi(vbd, name, flags, -1);
	if (err)
		goto out;

	err = tapdisk_vbd_attach(vbd, ring, minor);
	if (err)
		goto out;

	return 0;

out:
	tapdisk_vbd_detach(vbd);
	tapdisk_vbd_close_vdi(vbd);
	free(vbd->name);
	vbd->name = NULL;
	return err;
}
*/

static void
tapdisk_vbd_queue_count(td_vbd_t *vbd, int *new,
			int *pending, int *failed, int *completed)
{
	int n, p, f, c;
	td_vbd_request_t *vreq, *tvreq;

	n = 0;
	p = 0;
	f = 0;
	c = 0;

	tapdisk_vbd_for_each_request(vreq, tvreq, &vbd->new_requests)
		n++;

	tapdisk_vbd_for_each_request(vreq, tvreq, &vbd->pending_requests)
		p++;

	tapdisk_vbd_for_each_request(vreq, tvreq, &vbd->failed_requests)
		f++;

	tapdisk_vbd_for_each_request(vreq, tvreq, &vbd->completed_requests)
		c++;

	*new       = n;
	*pending   = p;
	*failed    = f;
	*completed = c;
}

static int
tapdisk_vbd_shutdown(td_vbd_t *vbd)
{
	int new, pending, failed, completed;

	if (!list_empty(&vbd->pending_requests))
		return -EAGAIN;

	tapdisk_vbd_queue_count(vbd, &new, &pending, &failed, &completed);

	DPRINTF("%s: state: 0x%08x, new: 0x%02x, pending: 0x%02x, "
		"failed: 0x%02x, completed: 0x%02x\n", 
		vbd->name, vbd->state, new, pending, failed, completed);
	DPRINTF("last activity: %010ld.%06ld, errors: 0x%04"PRIx64", "
		"retries: 0x%04"PRIx64", received: 0x%08"PRIx64", "
		"returned: 0x%08"PRIx64", kicked: 0x%08"PRIx64"\n",
		vbd->ts.tv_sec, vbd->ts.tv_usec,
		vbd->errors, vbd->retries, vbd->received, vbd->returned,
		vbd->kicked);

	tapdisk_vbd_close_vdi(vbd);
	tapdisk_vbd_detach(vbd);
	tapdisk_server_remove_vbd(vbd);
	free(vbd->name);
	free(vbd);

	return 0;
}

int
tapdisk_vbd_close(td_vbd_t *vbd)
{
	/*
	 * don't close if any requests are pending in the aio layer
	 */
	if (!list_empty(&vbd->pending_requests))
		goto fail;

	/* 
	 * if the queue is still active and we have more
	 * requests, try to complete them before closing.
	 */
	if (tapdisk_vbd_queue_ready(vbd) &&
	    (!list_empty(&vbd->new_requests) ||
	     !list_empty(&vbd->failed_requests) ||
	     !list_empty(&vbd->completed_requests)))
		goto fail;

	return tapdisk_vbd_shutdown(vbd);

fail:
	td_flag_set(vbd->state, TD_VBD_SHUTDOWN_REQUESTED);
	DBG(TLOG_WARN, "%s: requests pending\n", vbd->name);
	return -EAGAIN;
}

/*
 * control operations
 */

void
tapdisk_vbd_debug(td_vbd_t *vbd)
{
	td_image_t *image, *tmp;
	int new, pending, failed, completed;

	tapdisk_vbd_queue_count(vbd, &new, &pending, &failed, &completed);

	DBG(TLOG_WARN, "%s: state: 0x%08x, new: 0x%02x, pending: 0x%02x, "
	    "failed: 0x%02x, completed: 0x%02x, last activity: %010ld.%06ld, "
	    "errors: 0x%04"PRIx64", retries: 0x%04"PRIx64", "
	    "received: 0x%08"PRIx64", returned: 0x%08"PRIx64", "
	    "kicked: 0x%08"PRIx64"\n",
	    vbd->name, vbd->state, new, pending, failed, completed,
	    vbd->ts.tv_sec, vbd->ts.tv_usec, vbd->errors, vbd->retries,
	    vbd->received, vbd->returned, vbd->kicked);

	tapdisk_vbd_for_each_image(vbd, image, tmp)
		td_debug(image);
}

static void
tapdisk_vbd_drop_log(td_vbd_t *vbd)
{
	if (td_flag_test(vbd->state, TD_VBD_LOG_DROPPED))
		return;

	tapdisk_vbd_debug(vbd);
	tlog_precious(0);
	td_flag_set(vbd->state, TD_VBD_LOG_DROPPED);
}

int
tapdisk_vbd_get_disk_info(td_vbd_t *vbd, td_disk_info_t *info)
{
	if (list_empty(&vbd->images))
		return -EINVAL;

	*info = tapdisk_vbd_first_image(vbd)->info;
	return 0;
}

static int
tapdisk_vbd_queue_ready(td_vbd_t *vbd)
{
	return (!td_flag_test(vbd->state, TD_VBD_DEAD) &&
		!td_flag_test(vbd->state, TD_VBD_CLOSED) &&
		!td_flag_test(vbd->state, TD_VBD_QUIESCED) &&
		!td_flag_test(vbd->state, TD_VBD_QUIESCE_REQUESTED));
}

int
tapdisk_vbd_retry_needed(td_vbd_t *vbd)
{
	return !(list_empty(&vbd->failed_requests) &&
		 list_empty(&vbd->new_requests));
}

int
tapdisk_vbd_lock(td_vbd_t *vbd)
{
	return 0;
}

int
tapdisk_vbd_quiesce_queue(td_vbd_t *vbd)
{
	if (!list_empty(&vbd->pending_requests)) {
		td_flag_set(vbd->state, TD_VBD_QUIESCE_REQUESTED);
		return -EAGAIN;
	}

	td_flag_clear(vbd->state, TD_VBD_QUIESCE_REQUESTED);
	td_flag_set(vbd->state, TD_VBD_QUIESCED);
	return 0;
}

int
tapdisk_vbd_start_queue(td_vbd_t *vbd)
{
	td_flag_clear(vbd->state, TD_VBD_QUIESCED);
	td_flag_clear(vbd->state, TD_VBD_QUIESCE_REQUESTED);
	tapdisk_vbd_mark_progress(vbd);
	return 0;
}

int
tapdisk_vbd_kill_queue(td_vbd_t *vbd)
{
	tapdisk_vbd_quiesce_queue(vbd);
	td_flag_set(vbd->state, TD_VBD_DEAD);
	return 0;
}

#if 0
static int
tapdisk_vbd_open_image(td_vbd_t *vbd, td_image_t *image)
{
	int err;
	td_image_t *parent;

	err = td_open(image);
	if (err)
		return err;

	if (!tapdisk_vbd_is_last_image(vbd, image)) {
		parent = tapdisk_vbd_next_image(image);
		err    = td_validate_parent(image, parent);
		if (err) {
			td_close(image);
			return err;
		}
	}

	return 0;
}
#endif

int
tapdisk_vbd_pause(td_vbd_t *vbd)
{
	int err;
    struct td_xenblkif *blkif;

	INFO("pause requested\n");

	td_flag_set(vbd->state, TD_VBD_PAUSE_REQUESTED);

	if (vbd->nbdserver)
		tapdisk_nbdserver_pause(vbd->nbdserver);

	err = tapdisk_vbd_quiesce_queue(vbd);
	if (err)
		return err;

    list_for_each_entry(blkif, &vbd->rings, entry)
		tapdisk_xenblkif_suspend(blkif);

	tapdisk_vbd_close_vdi(vbd);

	INFO("pause completed\n");

	if (!list_empty(&vbd->failed_requests))
		INFO("warning: failed requests pending\n");

	td_flag_clear(vbd->state, TD_VBD_PAUSE_REQUESTED);
	td_flag_set(vbd->state, TD_VBD_PAUSED);

	return 0;
}

int
tapdisk_vbd_resume(td_vbd_t *vbd, const char *name)
{
	int i, err;
    struct td_xenblkif *blkif;

	DBG(TLOG_DBG, "resume requested\n");

	if (!td_flag_test(vbd->state, TD_VBD_PAUSED)) {
		EPRINTF("resume request for unpaused vbd %s\n", vbd->name);
		return -EINVAL;
	}

	for (i = 0; i < TD_VBD_EIO_RETRIES; i++) {
		err = tapdisk_vbd_open_vdi(vbd, name, vbd->flags | TD_OPEN_STRICT, -1);
		if (!err)
			break;

		sleep(TD_VBD_EIO_SLEEP);
	}

	if (!err) {
		td_disk_info_t disk_info;
		err = tapdisk_vbd_get_disk_info(vbd, &disk_info);
		if (err) {
			EPRINTF("VBD %d failed to get disk info: %s\n", vbd->uuid,
					strerror(-err));
			goto resume_failed;
		}
		if (vbd->disk_info.size != disk_info.size
				|| vbd->disk_info.sector_size != disk_info.sector_size
				|| vbd->disk_info.info != disk_info.info) {
			EPRINTF("VBD %d cannot change disk info\n", vbd->uuid);
			err = -EMEDIUMTYPE;
			goto resume_failed;
		}
	}
resume_failed:
	if (err) {
		td_flag_set(vbd->state, TD_VBD_RESUME_FAILED);
		tapdisk_vbd_close_vdi(vbd);
		return err;
	}
	td_flag_clear(vbd->state, TD_VBD_RESUME_FAILED);

	DBG(TLOG_DBG, "resume completed\n");

	tapdisk_vbd_start_queue(vbd);
	td_flag_clear(vbd->state, TD_VBD_PAUSED);
	td_flag_clear(vbd->state, TD_VBD_PAUSE_REQUESTED);
	tapdisk_vbd_check_state(vbd);

	if (vbd->nbdserver)
		tapdisk_nbdserver_unpause(vbd->nbdserver);

    list_for_each_entry(blkif, &vbd->rings, entry)
		tapdisk_xenblkif_resume(blkif);


	DBG(TLOG_DBG, "state checked\n");

	return 0;
}

static int
tapdisk_vbd_request_ttl(td_vbd_request_t *vreq,
			const struct timeval *now)
{
	struct timeval delta;
	timersub(now, &vreq->ts, &delta);
	return vreq->vbd->req_timeout - delta.tv_sec;
}

static int
__tapdisk_vbd_request_timeout(td_vbd_request_t *vreq,
			      const struct timeval *now)
{
	int timeout;

	timeout = tapdisk_vbd_request_ttl(vreq, now) < 0;
	if (timeout)
		ERR(vreq->error,
		    "req %s timed out, retried %d times\n",
		    vreq->name, vreq->num_retries);

	return timeout;
}

static int
tapdisk_vbd_request_timeout(td_vbd_request_t *vreq)
{
	struct timeval now;
	gettimeofday(&now, NULL);
	return __tapdisk_vbd_request_timeout(vreq, &now);
}

static void
tapdisk_vbd_check_queue_state(td_vbd_t *vbd)
{
	td_vbd_request_t *vreq, *tmp;
	struct timeval now;

	gettimeofday(&now, NULL);
	tapdisk_vbd_for_each_request(vreq, tmp, &vbd->failed_requests)
		if (__tapdisk_vbd_request_timeout(vreq, &now))
			tapdisk_vbd_complete_vbd_request(vbd, vreq);

	if (!list_empty(&vbd->new_requests) ||
	    !list_empty(&vbd->failed_requests))
		tapdisk_vbd_issue_requests(vbd);

}

static inline int
tapdisk_vbd_produce_rrds(td_vbd_t *vbd) {

	td_image_t *leaf;
	int off = 0, size = 0;
	int err;
	int i, j;
	char *buf;
	int json_str_len_off, md5sum_str_len_off, json_data_off, json_data_len;
	const int json_str_len = 8 + 1, md5sum_str_len = 32 + 1;
	char tmp[md5sum_str_len + 1];
	time_t t;
	MD5_CTX md5_ctx;
	unsigned char md5_out[MD5_DIGEST_LENGTH];

	ASSERT(vbd);

	buf = vbd->rrd.shm.mem;

	/*
	 * If no VDI has been opened yet there's nothing to report.
	 */
	if (!buf)
		return 0;

	/*
	 * Produce RRDs every five seconds.
	 */
	t = time(NULL);
	if (t - vbd->rrd.last < 5)
		return 0;
	vbd->rrd.last = t;

	size = vbd->rrd.shm.size - off;
	err = tapdisk_snprintf(buf, &off, &size, 0, "DATASOURCES\n");
	if (err)
		return err;

	/*
	 * reserve space for JSON string length
	 */
	json_str_len_off = off;
	off += json_str_len, size -= json_str_len;

	/*
	 * reserve space for MD5 sum of JSON string
	 */
	md5sum_str_len_off = off;
	off += md5sum_str_len, size -= md5sum_str_len;

	json_data_off = off;
	err = tapdisk_snprintf(buf, &off, &size, 0,	"{\n");
	err += tapdisk_snprintf(buf, &off, &size, 1, "\"timestamp\": %lu,\n",
			time(NULL));
	err += tapdisk_snprintf(buf, &off, &size, 1, "\"datasources\": {\n");
	if (err)
		return err;

	leaf = tapdisk_vbd_first_image(vbd);

	/*
	 * XXX We're only reporting RRDs for leaves. We could traverse the list
	 * of parent and report RRDs for each one of them, if there is something
	 * to report. However, for internal VHD files there's nothing to report
	 * so that would end up in a useless traverse of the list. We could address
	 * this issue by keeping a list of images that do have an RRD callback.
	 */
	if (leaf && leaf->driver->ops->td_rrd) {
		err = leaf->driver->ops->td_rrd(leaf->driver, buf, &off, &size);
		if (err)
			return err;
		err = tapdisk_snprintf(buf, &off, &size, 0, ",\n");
		if (err)
			return err;
	}

	err += tapdisk_snprintf(buf, &off, &size, 2, "\"io_errors\": {\n");
	err += tapdisk_snprintf(buf, &off, &size, 3,
			"\"description\": \"Number of I/O errors\",\n");
	err += tapdisk_snprintf(buf, &off, &size, 3, "\"owner\": \"host\",\n");
	err += tapdisk_snprintf(buf, &off, &size, 3,  "\"type\": "
			"\"absolute\",\n");
	err += tapdisk_snprintf(buf, &off, &size, 3, "\"units\": \"units\",\n");
	err += tapdisk_snprintf(buf, &off, &size, 3, "\"min\": \"0.00\",\n");
	err += tapdisk_snprintf(buf, &off, &size, 3, "\"max\": \"inf\",\n");
	err += tapdisk_snprintf(buf, &off, &size, 3, "\"value\": \"%llu\",\n",
			vbd->errors);
	err += tapdisk_snprintf(buf, &off, &size, 3, "\"value_type\": \"float\"\n");
	err += tapdisk_snprintf(buf, &off, &size, 2, "}\n");
	err += tapdisk_snprintf(buf, &off, &size, 1, "}\n");
	err += tapdisk_snprintf(buf, &off, &size, 0, "}\n");
	if (err)
		return err;

	json_data_len = off - json_str_len;
	sprintf(tmp, "%08x\n", json_data_len);
	strncpy(buf + json_str_len_off, tmp, json_str_len);

	MD5_Init(&md5_ctx);
	MD5_Update(&md5_ctx, buf + json_data_off, json_data_len);
	MD5_Final(md5_out, &md5_ctx);
	for (i = 0, j = 0; i < MD5_DIGEST_LENGTH; i++)
		j += sprintf(buf + md5sum_str_len_off + j, "%02x", md5_out[i]);
	buf[(md5sum_str_len_off + j)] = '\n';

	memset(buf + off, '\0', size - off);
	return msync(buf, vbd->rrd.shm.size, MS_ASYNC);
}

void
tapdisk_vbd_check_state(td_vbd_t *vbd)
{
    struct td_xenblkif *blkif;

	tapdisk_vbd_produce_rrds(vbd);

    /*
     * TODO don't ignore return value
     */
    list_for_each_entry(blkif, &vbd->rings, entry)
		tapdisk_xenblkif_ring_stats_update(blkif);

	tapdisk_vbd_check_queue_state(vbd);

	if (td_flag_test(vbd->state, TD_VBD_QUIESCE_REQUESTED))
		tapdisk_vbd_quiesce_queue(vbd);

	if (td_flag_test(vbd->state, TD_VBD_PAUSE_REQUESTED))
		tapdisk_vbd_pause(vbd);

	if (td_flag_test(vbd->state, TD_VBD_SHUTDOWN_REQUESTED))
		tapdisk_vbd_close(vbd);
}

void
tapdisk_vbd_check_progress(td_vbd_t *vbd)
{
	time_t diff;
	struct timeval now, delta;

	if (list_empty(&vbd->pending_requests))
		return;

	gettimeofday(&now, NULL);
	timersub(&now, &vbd->ts, &delta);
	diff = delta.tv_sec;

	if (diff >= TD_VBD_WATCHDOG_TIMEOUT && tapdisk_vbd_queue_ready(vbd)) {
		DBG(TLOG_WARN, "%s: watchdog timeout: pending requests "
		    "idle for %ld seconds\n", vbd->name, diff);
		tapdisk_vbd_drop_log(vbd);
		return;
	}

	tapdisk_server_set_max_timeout(TD_VBD_WATCHDOG_TIMEOUT - diff);
}

/*
 * request submission 
 */

static int
tapdisk_vbd_check_queue(td_vbd_t *vbd)
{
	if (list_empty(&vbd->images))
		return -ENOSYS;

	if (!tapdisk_vbd_queue_ready(vbd))
		return -EAGAIN;

	return 0;
}

static int
tapdisk_vbd_request_should_retry(td_vbd_t *vbd, td_vbd_request_t *vreq)
{
	if (td_flag_test(vbd->state, TD_VBD_DEAD) ||
	    td_flag_test(vbd->state, TD_VBD_SHUTDOWN_REQUESTED))
		return 0;

	switch (abs(vreq->error)) {
	case EPERM:
	case ENOSYS:
	case ESTALE:
	case ENOSPC:
	case EFAULT:
		return 0;
	}

	if (tapdisk_vbd_request_timeout(vreq))
		return 0;

	return 1;
}

static void
tapdisk_vbd_complete_vbd_request(td_vbd_t *vbd, td_vbd_request_t *vreq)
{
	if (!vreq->submitting && !vreq->secs_pending) {
		if (vreq->error &&
		    tapdisk_vbd_request_should_retry(vbd, vreq))
			tapdisk_vbd_move_request(vreq, &vbd->failed_requests);
		else
			tapdisk_vbd_move_request(vreq, &vbd->completed_requests);
	}
}

static void
FIXME_maybe_count_enospc_redirect(td_vbd_t *vbd, td_request_t treq)
{
	int write = treq.op == TD_OP_WRITE;
	if (write &&
	    treq.image == tapdisk_vbd_first_image(vbd) &&
	    vbd->FIXME_enospc_redirect_count_enabled)
		vbd->FIXME_enospc_redirect_count += treq.secs;
}

static void
__tapdisk_vbd_complete_td_request(td_vbd_t *vbd, td_vbd_request_t *vreq,
				  td_request_t treq, int res)
{
	td_image_t *image = treq.image;
	int err;

	err = (res <= 0 ? res : -res);
	vbd->secs_pending  -= treq.secs;
	vreq->secs_pending -= treq.secs;

	if (err != -EBUSY) {
		int write = treq.op == TD_OP_WRITE;
		td_sector_count_add(&image->stats.hits, treq.secs, write);
		if (err)
			td_sector_count_add(&image->stats.fail,
					    treq.secs, write);

		FIXME_maybe_count_enospc_redirect(vbd, treq);
	}

	if (err) {
		if (err != -EBUSY) {
			if (!vreq->error &&
			    err != vreq->prev_error)
				tlog_drv_error(image->driver, err,
					       "req %s: %s 0x%04x secs @ 0x%08"PRIx64" - %s",
					       vreq->name,
					       (treq.op == TD_OP_WRITE ? "write" : "read"),
					       treq.secs, treq.sec, strerror(abs(err)));
			vbd->errors++;
		}
		vreq->error = (vreq->error ? : err);
	}

	tapdisk_vbd_complete_vbd_request(vbd, vreq);
}

static void
__tapdisk_vbd_reissue_td_request(td_vbd_t *vbd,
				 td_image_t *image, td_request_t treq)
{
	td_image_t *parent;
	td_vbd_request_t *vreq;

	vreq = treq.vreq;
	gettimeofday(&vreq->last_try, NULL);

	vreq->submitting++;

	if (tapdisk_vbd_is_last_image(vbd, image)) {
		memset(treq.buf, 0, treq.secs << SECTOR_SHIFT);
		td_complete_request(treq, 0);
		goto done;
	}

	parent     = tapdisk_vbd_next_image(image);
	treq.image = parent;

	/* return zeros for requests that extend beyond end of parent image */
	if (treq.sec + treq.secs > parent->info.size) {
		td_request_t clone  = treq;

		if (parent->info.size > treq.sec) {
			int secs    = parent->info.size - treq.sec;
			clone.sec  += secs;
			clone.secs -= secs;
			clone.buf  += (secs << SECTOR_SHIFT);
			treq.secs   = secs;
		} else
			treq.secs   = 0;

		memset(clone.buf, 0, clone.secs << SECTOR_SHIFT);
		td_complete_request(clone, 0);

		if (!treq.secs)
			goto done;
	}

	switch (treq.op) {
	case TD_OP_WRITE:
		td_queue_write(parent, treq);
		break;

	case TD_OP_READ:
		td_queue_read(parent, treq);
		break;
	}

done:
	vreq->submitting--;
	if (!vreq->secs_pending)
		tapdisk_vbd_complete_vbd_request(vbd, vreq);
}

void
tapdisk_vbd_forward_request(td_request_t treq)
{
	td_vbd_t *vbd;
	td_image_t *image;
	td_vbd_request_t *vreq;

	image = treq.image;
	vreq  = treq.vreq;
	vbd   = vreq->vbd;

	tapdisk_vbd_mark_progress(vbd);

	if (tapdisk_vbd_queue_ready(vbd))
		__tapdisk_vbd_reissue_td_request(vbd, image, treq);
	else
		__tapdisk_vbd_complete_td_request(vbd, vreq, treq, -EBUSY);
}

void
tapdisk_vbd_complete_td_request(td_request_t treq, int res)
{
	td_vbd_t *vbd;
	td_image_t *image, *leaf;
	td_vbd_request_t *vreq;

	image = treq.image;
	vreq  = treq.vreq;
	vbd   = vreq->vbd;

	tapdisk_vbd_mark_progress(vbd);

	if (abs(res) == ENOSPC && td_flag_test(image->flags,
				TD_IGNORE_ENOSPC)) {
		res = 0;
		leaf = tapdisk_vbd_first_image(vbd);
		if (vbd->secondary_mode == TD_VBD_SECONDARY_MIRROR) {
			DPRINTF("ENOSPC: disabling mirroring\n");
			list_del_init(&leaf->next);
			vbd->retired = leaf;
		} else if (vbd->secondary_mode == TD_VBD_SECONDARY_STANDBY) {
			DPRINTF("ENOSPC: failing over to secondary image\n");
			list_add(&vbd->secondary->next, leaf->next.prev);
			vbd->FIXME_enospc_redirect_count_enabled = 1;
		}
		if (vbd->secondary_mode != TD_VBD_SECONDARY_DISABLED) {
			vbd->secondary = NULL;
			vbd->secondary_mode = TD_VBD_SECONDARY_DISABLED;
			signal_enospc(vbd);
		}
	}

	if (res != 0 && image->type == DISK_TYPE_NBD && 
			((image == vbd->secondary) || 
			 (image == vbd->retired))) {
		ERROR("Got non-zero res for NBD secondary - disabling "
				"mirroring: %s",vreq->name);
		vbd->nbd_mirror_failed = 1;
		res = 0; /* Pretend the writes have completed successfully */

		/* It was the secondary that timed out - disable secondary */
		list_del_init(&image->next);
		vbd->retired = image;
		if (vbd->secondary_mode != TD_VBD_SECONDARY_DISABLED) {
			vbd->secondary = NULL;
			vbd->secondary_mode = TD_VBD_SECONDARY_DISABLED;
		}
	}

	DBG(TLOG_DBG, "%s: req %s seg %d sec 0x%08"PRIx64
	    " secs 0x%04x buf %p op %d res %d\n", image->name,
	    vreq->name, treq.sidx, treq.sec, treq.secs,
	    treq.buf, vreq->op, res);

	__tapdisk_vbd_complete_td_request(vbd, vreq, treq, res);
}

static inline void
queue_mirror_req(td_vbd_t *vbd, td_request_t clone)
{
	clone.image = vbd->secondary;
	td_queue_write(vbd->secondary, clone);
}

static int
tapdisk_vbd_issue_request(td_vbd_t *vbd, td_vbd_request_t *vreq)
{
	td_image_t *image;
	td_request_t treq;
	td_sector_t sec;
	int i, err;

	sec    = vreq->sec;
	image  = tapdisk_vbd_first_image(vbd);

	vreq->submitting = 1;

	tapdisk_vbd_mark_progress(vbd);
	vreq->last_try = vbd->ts;

	tapdisk_vbd_move_request(vreq, &vbd->pending_requests);

	err = tapdisk_vbd_check_queue(vbd);
	if (err) {
		vreq->error = err;
		goto fail;
	}

	err = tapdisk_image_check_request(image, vreq);
	if (err) {
		vreq->error = err;
		goto fail;
	}

	for (i = 0; i < vreq->iovcnt; i++) {
		struct td_iovec *iov = &vreq->iov[i];

		treq.sidx           = i;
		treq.buf            = iov->base;
		treq.sec            = sec;
		treq.secs           = iov->secs;
		treq.image          = image;
		treq.cb             = tapdisk_vbd_complete_td_request;
		treq.cb_data        = NULL;
		treq.vreq           = vreq;


		vreq->secs_pending += iov->secs;
		vbd->secs_pending  += iov->secs;
		if (vbd->secondary_mode == TD_VBD_SECONDARY_MIRROR &&
		    vreq->op == TD_OP_WRITE) {
			vreq->secs_pending += iov->secs;
			vbd->secs_pending  += iov->secs;
		}

		switch (vreq->op) {
		case TD_OP_WRITE:
			treq.op = TD_OP_WRITE;
			/*
			 * it's important to queue the mirror request before 
			 * queuing the main one. If the main image runs into 
			 * ENOSPC, the mirroring could be disabled before 
			 * td_queue_write returns, so if the mirror request was 
			 * queued after (which would then not happen), we'd 
			 * lose that write and cause the process to hang with 
			 * unacknowledged writes
			 */
			if (vbd->secondary_mode == TD_VBD_SECONDARY_MIRROR)
				queue_mirror_req(vbd, treq);
			td_queue_write(treq.image, treq);
			break;

		case TD_OP_READ:
			treq.op = TD_OP_READ;
			td_queue_read(treq.image, treq);
			break;
		}

		DBG(TLOG_DBG, "%s: req %s seg %d sec 0x%08"PRIx64" secs 0x%04x "
		    "buf %p op %d\n", image->name, vreq->name, i, treq.sec, treq.secs,
		    treq.buf, vreq->op);
		sec += iov->secs;
	}

	err = 0;

out:
	vreq->submitting--;
	if (!vreq->secs_pending) {
		err = (err ? : vreq->error);
		tapdisk_vbd_complete_vbd_request(vbd, vreq);
	}

	return err;

fail:
	vreq->error = err;
	goto out;
}

static int
tapdisk_vbd_request_completed(td_vbd_t *vbd, td_vbd_request_t *vreq)
{
	return vreq->list_head == &vbd->completed_requests;
}

static int
tapdisk_vbd_reissue_failed_requests(td_vbd_t *vbd)
{
	int err;
	struct timeval now;
	td_vbd_request_t *vreq, *tmp;

	err = 0;
	gettimeofday(&now, NULL);

	tapdisk_vbd_for_each_request(vreq, tmp, &vbd->failed_requests) {
		if (vreq->secs_pending)
			continue;

		if (td_flag_test(vbd->state, TD_VBD_SHUTDOWN_REQUESTED)) {
			tapdisk_vbd_complete_vbd_request(vbd, vreq);
			continue;
		}

		if (vreq->error != -EBUSY &&
		    now.tv_sec - vreq->last_try.tv_sec < TD_VBD_RETRY_INTERVAL)
			continue;

		vbd->retries++;
		vreq->num_retries++;

		vreq->prev_error = vreq->error;
		vreq->error      = 0;

		DBG(TLOG_DBG, "retry #%d of req %s, "
		    "sec 0x%08"PRIx64", iovcnt: %d\n", vreq->num_retries,
		    vreq->name, vreq->sec, vreq->iovcnt);

		err = tapdisk_vbd_issue_request(vbd, vreq);
		/*
		 * if this request failed, but was not completed,
		 * we'll back off for a while.
		 */
		if (err && !tapdisk_vbd_request_completed(vbd, vreq))
			break;
	}

	return 0;
}

static void
tapdisk_vbd_count_new_request(td_vbd_t *vbd, td_vbd_request_t *vreq)
{
	struct td_iovec *iov;
	int write;

	write = vreq->op == TD_OP_WRITE;

	for (iov = &vreq->iov[0]; iov < &vreq->iov[vreq->iovcnt]; iov++)
		td_sector_count_add(&vbd->secs, iov->secs, write);
}

static int
tapdisk_vbd_issue_new_requests(td_vbd_t *vbd)
{
	int err;
	td_vbd_request_t *vreq, *tmp;

	tapdisk_vbd_for_each_request(vreq, tmp, &vbd->new_requests) {
		err = tapdisk_vbd_issue_request(vbd, vreq);
		/*
		 * if this request failed, but was not completed,
		 * we'll back off for a while.
		 */
		if (err && !tapdisk_vbd_request_completed(vbd, vreq))
			return err;

		tapdisk_vbd_count_new_request(vbd, vreq);
	}

	return 0;
}

int
tapdisk_vbd_recheck_state(td_vbd_t *vbd)
{
	if (list_empty(&vbd->new_requests))
		return 0;

	if (td_flag_test(vbd->state, TD_VBD_QUIESCED) ||
	    td_flag_test(vbd->state, TD_VBD_QUIESCE_REQUESTED))
		return 0;

	tapdisk_vbd_issue_new_requests(vbd);

	return 1;
}

static int
tapdisk_vbd_kill_requests(td_vbd_t *vbd)
{
	td_vbd_request_t *vreq, *tmp;

	tapdisk_vbd_for_each_request(vreq, tmp, &vbd->new_requests) {
		vreq->error = -ESHUTDOWN;
		tapdisk_vbd_move_request(vreq, &vbd->completed_requests);
	}

	tapdisk_vbd_for_each_request(vreq, tmp, &vbd->failed_requests) {
		vreq->error = -ESHUTDOWN;
		tapdisk_vbd_move_request(vreq, &vbd->completed_requests);
	}

	return 0;
}

int
tapdisk_vbd_issue_requests(td_vbd_t *vbd)
{
	int err;

	if (td_flag_test(vbd->state, TD_VBD_DEAD))
		return tapdisk_vbd_kill_requests(vbd);

	if (td_flag_test(vbd->state, TD_VBD_QUIESCED) ||
	    td_flag_test(vbd->state, TD_VBD_QUIESCE_REQUESTED)) {

		if (td_flag_test(vbd->state, TD_VBD_RESUME_FAILED))
			return tapdisk_vbd_kill_requests(vbd);
		else
			return -EAGAIN;
	}

	err = tapdisk_vbd_reissue_failed_requests(vbd);
	if (err)
		return err;

	return tapdisk_vbd_issue_new_requests(vbd);
}

int
tapdisk_vbd_queue_request(td_vbd_t *vbd, td_vbd_request_t *vreq)
{
	gettimeofday(&vreq->ts, NULL);
	vreq->vbd = vbd;

	list_add_tail(&vreq->next, &vbd->new_requests);
	vbd->received++;

	return 0;
}

void
tapdisk_vbd_kick(td_vbd_t *vbd)
{
	const struct list_head *list = &vbd->completed_requests;
	td_vbd_request_t *vreq, *prev, *next;

	vbd->kicked++;

	while (!list_empty(list)) {

		/*
		 * Take one request off the completed requests list, and then look for
		 * other requests in the same list that have the same token and
		 * complete them. This way we complete requests against the same token
		 * in one go before we proceed to completing requests with other
		 * tokens. The token is usually used to point back to some other
		 * structure, e.g. a blktap or a tapdisk3 connexion. Once all requests
		 * with a specific token have been completed, proceed to the next one
		 * until the list is empty.
		 */
		prev = list_entry(list->next, td_vbd_request_t, next);
		list_del(&prev->next);

		tapdisk_vbd_for_each_request(vreq, next, list) {
			if (vreq->token == prev->token) {

				prev->cb(prev, prev->error, prev->token, 0);
				vbd->returned++;

				list_del(&vreq->next);
				prev = vreq;
			}
		}

		prev->cb(prev, prev->error, prev->token, 1);
		vbd->returned++;
	}
}

int
tapdisk_vbd_start_nbdserver(td_vbd_t *vbd)
{
	td_disk_info_t info;
	int err;

	err = tapdisk_vbd_get_disk_info(vbd, &info);

	if (err)
		return err;

	vbd->nbdserver = tapdisk_nbdserver_alloc(vbd, info);

	if (!vbd->nbdserver) {
		EPRINTF("Error starting nbd server");
		return -1;
	}

	err = tapdisk_nbdserver_listen_unix(vbd->nbdserver);
	if (err) {
		tapdisk_nbdserver_free(vbd->nbdserver);
		EPRINTF("failed to listen on the UNIX domain socket: %s\n",
				strerror(-err));
		return err;
	}

	return 0;
}


static int
tapdisk_vbd_reqs_outstanding(td_vbd_t *vbd)
{
	int new, pending, failed, completed;

	ASSERT(vbd);

	tapdisk_vbd_queue_count(vbd, &new, &pending, &failed, &completed);

	return new + pending + failed + completed;
}


void
tapdisk_vbd_stats(td_vbd_t *vbd, td_stats_t *st)
{
	td_image_t *image, *next;
    struct td_xenblkif *blkif;
	const bool read_caching =
		TD_OPEN_NO_O_DIRECT == (vbd->flags & TD_OPEN_NO_O_DIRECT);

	tapdisk_stats_enter(st, '{');
	tapdisk_stats_field(st, "name", "s", vbd->name);

	tapdisk_stats_field(st, "secs", "[");
	tapdisk_stats_val(st, "llu", vbd->secs.rd);
	tapdisk_stats_val(st, "llu", vbd->secs.wr);
	tapdisk_stats_leave(st, ']');

	tapdisk_stats_field(st, "images", "[");
	tapdisk_vbd_for_each_image(vbd, image, next)
		tapdisk_image_stats(image, st);
	tapdisk_stats_leave(st, ']');

	if (vbd->tap) {
		tapdisk_stats_field(st, "tap", "{");
		tapdisk_blktap_stats(vbd->tap, st);
		tapdisk_stats_leave(st, '}');
	}

    /*
     * TODO Is this used by any one?
     */
    if (!list_empty(&vbd->rings)) {
	    tapdisk_stats_field(st, "xenbus", "{");
        list_for_each_entry(blkif, &vbd->rings, entry)
		    tapdisk_xenblkif_stats(blkif, st);
    	tapdisk_stats_leave(st, '}');
    }

	tapdisk_stats_field(st,
			"FIXME_enospc_redirect_count",
			"llu", vbd->FIXME_enospc_redirect_count);

	tapdisk_stats_field(st,
			"nbd_mirror_failed",
			"d", vbd->nbd_mirror_failed);

	tapdisk_stats_field(st,
			"reqs_outstanding",
			"d", tapdisk_vbd_reqs_outstanding(vbd));

	tapdisk_stats_field(st,
			"read_caching",
			"s",  read_caching ? "true": "false");

	tapdisk_stats_leave(st, '}');
}


bool inline
tapdisk_vbd_contains_dead_rings(td_vbd_t * vbd)
{
    return !list_empty(&vbd->dead_rings);
}

[-- Attachment #3: block-vhd.c --]
[-- Type: text/x-csrc, Size: 58429 bytes --]

//* 
 * Copyright (C) Citrix Systems Inc.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; version 2.1 only
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */

/*
 * block-vhd.c: asynchronous vhd implementation.
 *
 * A note on write transactions:
 * Writes that require updating the BAT or bitmaps cannot be signaled
 * as complete until all updates have reached disk.  Transactions are
 * used to ensure proper ordering in these cases.  The two types of
 * transactions are as follows:
 *   - Bitmap updates only: data writes that require updates to the same
 *     bitmap are grouped in a transaction.  Only after all data writes
 *     in a transaction complete does the bitmap write commence.  Only
 *     after the bitmap write finishes are the data writes signalled as
 *     complete.
 *   - BAT and bitmap updates: data writes are grouped in transactions
 *     as above, but a special extra write is included in the transaction,
 *     which zeros out the newly allocated bitmap on disk.  When the data
 *     writes and the zero-bitmap write complete, the BAT and bitmap writes
 *     are started in parallel.  The transaction is completed only after both
 *     the BAT and bitmap writes successfully return.
 */

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <uuid/uuid.h> /* For whatever reason, Linux packages this in */
                       /* e2fsprogs-devel.                            */
#include <string.h>    /* for memset.                                 */
#include <libaio.h>
#include <sys/mman.h>
#include <limits.h>

#include "debug.h"
#include "libvhd.h"
#include "tapdisk.h"
#include "tapdisk-driver.h"
#include "tapdisk-interface.h"
#include "tapdisk-disktype.h"
#include "tapdisk-storage.h"

unsigned int SPB;

#define DEBUGGING   2
#define MICROSOFT_COMPAT

#define VHD_BATMAP_MAX_RETRIES 10

#define __TRACE(s)							\
	do {								\
		DBG(TLOG_DBG, "%s: QUEUED: %" PRIu64 ", COMPLETED: %"	\
		    PRIu64", RETURNED: %" PRIu64 ", DATA_ALLOCATED: "	\
		    "%u, BBLK: 0x%04x\n",				\
		    s->vhd.file, s->queued, s->completed, s->returned,	\
		    VHD_REQS_DATA - s->vreq_free_count,			\
		    s->bat.pbw_blk);					\
	} while(0)

#if (DEBUGGING == 1)
  #define DBG(level, _f, _a...)      DPRINTF(_f, ##_a)
  #define ERR(_s, err, _f, _a...)    DPRINTF("ERROR: %d: " _f, err, ##_a)
  #define TRACE(s)                   ((void)0)
#elif (DEBUGGING == 2)
  #define DBG(level, _f, _a...)      tlog_write(level, _f, ##_a)
  #define ERR(_s, _err, _f, _a...)   tlog_drv_error((_s)->driver, _err, _f, ##_a)
  #define TRACE(s)                   __TRACE(s)
#else
  #define DBG(level, _f, _a...)      ((void)0)
  #define ERR(_s, err, _f, _a...)    ((void)0)
  #define TRACE(s)                   ((void)0)
#endif

/******VHD DEFINES******/
#define VHD_CACHE_SIZE               32

#define VHD_REQS_DATA                TAPDISK_DATA_REQUESTS
#define VHD_REQS_META                (VHD_CACHE_SIZE + 2)
#define VHD_REQS_TOTAL               (VHD_REQS_DATA + VHD_REQS_META)

#define VHD_OP_BAT_WRITE             0
#define VHD_OP_DATA_READ             1
#define VHD_OP_DATA_WRITE            2
#define VHD_OP_BITMAP_READ           3
#define VHD_OP_BITMAP_WRITE          4
#define VHD_OP_ZERO_BM_WRITE         5
#define VHD_OP_REDUNDANT_BM_WRITE    6

#define VHD_BM_BAT_LOCKED            0
#define VHD_BM_BAT_CLEAR             1
#define VHD_BM_BIT_CLEAR             2
#define VHD_BM_BIT_SET               3
#define VHD_BM_NOT_CACHED            4
#define VHD_BM_READ_PENDING          5

#define VHD_FLAG_OPEN_RDONLY         1
#define VHD_FLAG_OPEN_NO_CACHE       2
#define VHD_FLAG_OPEN_QUIET          4
#define VHD_FLAG_OPEN_STRICT         8
#define VHD_FLAG_OPEN_QUERY          16
#define VHD_FLAG_OPEN_PREALLOCATE    32
#define VHD_FLAG_OPEN_NO_O_DIRECT    64
#define VHD_FLAG_OPEN_LOCAL_CACHE    128

#define VHD_FLAG_BAT_LOCKED          1
#define VHD_FLAG_BAT_WRITE_STARTED   2

#define VHD_FLAG_BM_UPDATE_BAT       1
#define VHD_FLAG_BM_WRITE_PENDING    2
#define VHD_FLAG_BM_READ_PENDING     4
#define VHD_FLAG_BM_LOCKED           8

#define VHD_FLAG_REQ_UPDATE_BAT      1
#define VHD_FLAG_REQ_UPDATE_BITMAP   2
#define VHD_FLAG_REQ_QUEUED          4
#define VHD_FLAG_REQ_FINISHED        8

#define VHD_FLAG_TX_LIVE             1
#define VHD_FLAG_TX_UPDATE_BAT       2

typedef uint8_t vhd_flag_t;

struct vhd_state;
struct vhd_request;

struct vhd_req_list {
	struct vhd_request       *head;
	struct vhd_request       *tail;
};

struct vhd_transaction {
	int                       error;
	int                       closed;
	int                       started;
	int                       finished;
	vhd_flag_t                status;
	struct vhd_req_list       requests;
};

struct vhd_request {
	int                       error;
	uint8_t                   op;
	vhd_flag_t                flags;
	td_request_t              treq;
	struct tiocb              tiocb;
	struct vhd_state         *state;
	struct vhd_request       *next;
	struct vhd_transaction   *tx;
};

struct vhd_bat_state {
	vhd_bat_t                 bat;
	vhd_batmap_t              batmap;
	vhd_flag_t                status;
	uint32_t                  pbw_blk;     /* blk num of pending write */
	uint64_t                  pbw_offset;  /* file offset of same */
	struct vhd_request        req;         /* for writing bat table */
	struct vhd_request        zero_req;    /* for initializing bitmaps */
	char                     *bat_buf;
};

struct vhd_bitmap {
	uint32_t                  blk;
	uint64_t                  seqno;       /* lru sequence number */
	vhd_flag_t                status;

	char                     *map;         /* map should only be modified
					        * in finish_bitmap_write */
	char                     *shadow;      /* in-memory bitmap changes are 
					        * made to shadow and copied to
					        * map only after having been
					        * flushed to disk */
	struct vhd_transaction    tx;          /* transaction data structure
						* encapsulating data, bitmap, 
						* and bat writes */
	struct vhd_req_list       queue;       /* data writes waiting for next
						* transaction */
	struct vhd_req_list       waiting;     /* pending requests that cannot
					        * be serviced until this bitmap
					        * is read from disk */
	struct vhd_request        req;
};

struct vhd_state {
	vhd_flag_t                flags;

        /* VHD stuff */
	vhd_context_t             vhd;
	uint32_t                  spp;         /* sectors per page */
	uint32_t                  spb;         /* sectors per block */
	uint64_t                  first_db;    /* pointer to datablock 0 */

	/**
	 * Pointer to the next (unallocated) datablock. If greater than UINT_MAX,
	 * there are no more blocks available.
	 */
	uint64_t                  next_db;

	struct vhd_bat_state      bat;

	uint64_t                  bm_lru;      /* lru sequence number */
	uint32_t                  bm_secs;     /* size of bitmap, in sectors */
	struct vhd_bitmap        *bitmap[VHD_CACHE_SIZE];

	int                       bm_free_count;
	struct vhd_bitmap        *bitmap_free[VHD_CACHE_SIZE];
	struct vhd_bitmap         bitmap_list[VHD_CACHE_SIZE];

	int                       vreq_free_count;
	struct vhd_request       *vreq_free[VHD_REQS_DATA];
	struct vhd_request        vreq_list[VHD_REQS_DATA];

	/* for redundant bitmap writes */
	int                       padbm_size;
	char                     *padbm_buf;
	long int                  debug_skipped_redundant_writes;
	long int                  debug_done_redundant_writes;

	td_driver_t              *driver;

	uint64_t                  queued;
	uint64_t                  completed;
	uint64_t                  returned;
	uint64_t                  reads;
	uint64_t                  read_size;
	uint64_t                  writes;
	uint64_t                  write_size;
};

#define test_vhd_flag(word, flag)  ((word) & (flag))
#define set_vhd_flag(word, flag)   ((word) |= (flag))
#define clear_vhd_flag(word, flag) ((word) &= ~(flag))

#define bat_entry(s, blk)          ((s)->bat.bat.bat[(blk)])

static void vhd_complete(void *, struct tiocb *, int);
static void finish_data_transaction(struct vhd_state *, struct vhd_bitmap *);

static struct vhd_state  *_vhd_master;
static unsigned long      _vhd_zsize;
static char              *_vhd_zeros = NULL;
int                       _dev_zero = -1;

static int
vhd_initialize(struct vhd_state *s)
{
	int err;

	if (_vhd_zeros)
		return 0;

	_vhd_zsize = 2 * getpagesize();
	if (test_vhd_flag(s->flags, VHD_FLAG_OPEN_PREALLOCATE))
		_vhd_zsize += VHD_BLOCK_SIZE;

	_dev_zero = open("/dev/zero", O_RDONLY);
	if (unlikely(_dev_zero == -1)) {
		err = errno;
		EPRINTF("failed to open /dev/zero: %s\n", strerror(err));
		return -err;
	}

	_vhd_zeros = mmap(NULL, _vhd_zsize, PROT_READ,
			  MAP_SHARED, _dev_zero, 0);
	if (_vhd_zeros == MAP_FAILED) {
		int _err;
		err = errno;
		EPRINTF("vhd_initialize failed: %s\n", strerror(err));
		_vhd_zeros = NULL;
		_vhd_zsize = 0;
		_err = close(_dev_zero);
		if (unlikely(_err == -1))
			EPRINTF("failed to close /dev/zero: %s (error ignored)\n",
					strerror(errno));
		else
			_dev_zero = -1;

		return -err;
	}

	_vhd_master = s;
	return 0;
}

static void
vhd_free(struct vhd_state *s)
{
	if (_vhd_master != s || !_vhd_zeros)
		return;

	free(s->padbm_buf);
	munmap(_vhd_zeros, _vhd_zsize);
	_vhd_zsize  = 0;
	_vhd_zeros  = NULL;
	_vhd_master = NULL;
	if (_dev_zero != -1) {
		int _err = close(_dev_zero);
		if (unlikely(_err == -1))
			EPRINTF("failed to close /dev/zero: %s (error ignored)\n",
					strerror(errno));
		else
			_dev_zero = -1;
	}
}

static char *
_get_vhd_zeros(const char *func, unsigned long size)
{
	if (!_vhd_zeros || _vhd_zsize < size) {
		EPRINTF("invalid zero request from %s: %lu, %lu, %p\n",
			func, size, _vhd_zsize, _vhd_zeros);
		ASSERT(0);
	}

	return _vhd_zeros;
}

#define vhd_zeros(size)	_get_vhd_zeros(__func__, size)

static inline void
set_batmap(struct vhd_state *s, uint32_t blk)
{
	if (s->bat.batmap.map) {
		vhd_batmap_set(&s->vhd, &s->bat.batmap, blk);
		DBG(TLOG_DBG, "block 0x%x completely full\n", blk);
	}
}

static inline int
test_batmap(struct vhd_state *s, uint32_t blk)
{
	if (!s->bat.batmap.map)
		return 0;
	return vhd_batmap_test(&s->vhd, &s->bat.batmap, blk);
}

static int
vhd_kill_footer(struct vhd_state *s)
{
	int err;
	off64_t end;
	void *zeros;

	if (s->vhd.footer.type == HD_TYPE_FIXED)
		return 0;

	err = posix_memalign(&zeros, 512, 512);
	if (err)
		return -err;

	err = 1;
	memset(zeros, 0xc7c7c7c7, 512);

	if ((end = lseek64(s->vhd.fd, 0, SEEK_END)) == -1)
		goto fail;

	if (lseek64(s->vhd.fd, (end - 512), SEEK_SET) == -1)
		goto fail;

	if (write(s->vhd.fd, zeros, 512) != 512)
		goto fail;

	err = 0;

 fail:
	free(zeros);
	if (err)
		return (errno ? -errno : -EIO);
	return 0;
}

static inline int
find_next_free_block(struct vhd_state *s)
{
	int err;
	off64_t eom;
	uint32_t i, entry;

	err = vhd_end_of_headers(&s->vhd, &eom);
	if (err)
		return err;

	s->next_db = secs_round_up(eom);
	s->first_db = s->next_db;
	if ((s->first_db + s->bm_secs) % s->spp)
		s->first_db += (s->spp - ((s->first_db + s->bm_secs) % s->spp));

	for (i = 0; i < s->bat.bat.entries; i++) {
		entry = bat_entry(s, i);
		if (entry != DD_BLK_UNUSED && entry >= s->next_db)
			s->next_db = (uint64_t)entry + (uint64_t)s->spb
				+ (uint64_t)s->bm_secs;
			if (s->next_db > UINT_MAX)
				break;
	}

	return 0;
}

static void
vhd_free_bat(struct vhd_state *s)
{
	free(s->bat.bat.bat);
	free(s->bat.batmap.map);
	free(s->bat.bat_buf);
	memset(&s->bat, 0, sizeof(struct vhd_bat));
}

static int
vhd_initialize_bat(struct vhd_state *s)
{
	int err, batmap_required, i;
	void *buf;

	memset(&s->bat, 0, sizeof(struct vhd_bat));

	err = vhd_read_bat(&s->vhd, &s->bat.bat);
	if (err) {
		EPRINTF("%s: reading bat: %d\n", s->vhd.file, err);
		return err;
	}

	batmap_required = 1;
	if (test_vhd_flag(s->flags, VHD_FLAG_OPEN_RDONLY)) {
		batmap_required = 0;
	} else {
		err = find_next_free_block(s);
		if (err)
			goto fail;
	}

	if (vhd_has_batmap(&s->vhd)) {
		for (i = 0; i < VHD_BATMAP_MAX_RETRIES; i++) {
			err = vhd_read_batmap(&s->vhd, &s->bat.batmap);
			if (err) {
				EPRINTF("%s: reading batmap: %d\n",
						s->vhd.file, err);
				if (batmap_required)
					goto fail;
			} else {
				break;
			}
		}
		if (err)
			EPRINTF("%s: ignoring non-critical batmap error\n",
					s->vhd.file);
	}

	err = posix_memalign(&buf, VHD_SECTOR_SIZE, VHD_SECTOR_SIZE);
	if (err)
		goto fail;

	s->bat.bat_buf = buf;

	return 0;

fail:
	vhd_free_bat(s);
	return err;
}

static void
vhd_free_bitmap_cache(struct vhd_state *s)
{
	int i;
	struct vhd_bitmap *bm;

	for (i = 0; i < VHD_CACHE_SIZE; i++) {
		bm = s->bitmap_list + i;
		free(bm->map);
		free(bm->shadow);
		s->bitmap_free[i] = NULL;
	}

	memset(s->bitmap_list, 0, sizeof(struct vhd_bitmap) * VHD_CACHE_SIZE);
}

static int
vhd_initialize_bitmap_cache(struct vhd_state *s)
{
	int i, err, map_size;
	struct vhd_bitmap *bm;
	void *map, *shadow;

	memset(s->bitmap_list, 0, sizeof(struct vhd_bitmap) * VHD_CACHE_SIZE);

	s->bm_lru        = 0;
	map_size         = vhd_sectors_to_bytes(s->bm_secs);
	s->bm_free_count = VHD_CACHE_SIZE;

	for (i = 0; i < VHD_CACHE_SIZE; i++) {
		bm = s->bitmap_list + i;

		err = posix_memalign(&map, 512, map_size);
		if (err)
			goto fail;

		bm->map = map;

		err = posix_memalign(&shadow, 512, map_size);
		if (err)
			goto fail;

		bm->shadow = shadow;

		memset(bm->map, 0, map_size);
		memset(bm->shadow, 0, map_size);
		s->bitmap_free[i] = bm;
	}

	return 0;

fail:
	vhd_free_bitmap_cache(s);
	return err;
}

static int
vhd_initialize_dynamic_disk(struct vhd_state *s)
{
	uint32_t bm_size;
	void *buf;
	int err;

	err = vhd_get_header(&s->vhd);
	if (err) {
		if (!test_vhd_flag(s->flags, VHD_FLAG_OPEN_QUIET))
			EPRINTF("Error reading VHD DD header.\n");
		return err;
	}

	if (s->vhd.header.hdr_ver != 0x00010000) {
		EPRINTF("unsupported header version! (0x%x)\n",
			s->vhd.header.hdr_ver);
		return -EINVAL;
	}

	s->spp     = getpagesize() >> VHD_SECTOR_SHIFT;
	s->spb     = s->vhd.header.block_size >> VHD_SECTOR_SHIFT;
	s->bm_secs = secs_round_up_no_zero(s->spb >> 3);

	s->padbm_size = (s->bm_secs / getpagesize()) * getpagesize();
	if (s->bm_secs % getpagesize())
		s->padbm_size += getpagesize();

	err = posix_memalign(&buf, 512, s->padbm_size);
	if (err)
		return -err;

	s->padbm_buf = buf;
	bm_size = s->bm_secs << VHD_SECTOR_SHIFT;
	memset(s->padbm_buf, 0, s->padbm_size - bm_size);
	memset(s->padbm_buf + (s->padbm_size - bm_size), ~0, bm_size);
	s->debug_skipped_redundant_writes = 0;
	s->debug_done_redundant_writes = 0;

	if (test_vhd_flag(s->flags, VHD_FLAG_OPEN_NO_CACHE))
		return 0;

	err = vhd_initialize_bat(s);
	if (err)
		return err;

	err = vhd_initialize_bitmap_cache(s);
	if (err) {
		vhd_free_bat(s);
		return err;
	}

	return 0;
}

static int
vhd_check_version(struct vhd_state *s)
{
	if (strncmp(s->vhd.footer.crtr_app, "tap", 3))
		return 0;

	if (s->vhd.footer.crtr_ver > VHD_CURRENT_VERSION) {
		if (!test_vhd_flag(s->flags, VHD_FLAG_OPEN_QUIET))
			EPRINTF("WARNING: %s vhd creator version 0x%08x, "
				"but only versions up to 0x%08x are "
				"supported for IO\n", s->vhd.file,
				s->vhd.footer.crtr_ver, VHD_CURRENT_VERSION);

		return -EINVAL;
	}

	return 0;
}

static void
vhd_log_open(struct vhd_state *s)
{
	char buf[5];
	uint32_t i, allocated, full;

	if (test_vhd_flag(s->flags, VHD_FLAG_OPEN_QUIET))
		return;

	snprintf(buf, sizeof(buf), "%s", s->vhd.footer.crtr_app);
	if (!vhd_type_dynamic(&s->vhd)) {
		DPRINTF("%s version: %s 0x%08x\n",
			s->vhd.file, buf, s->vhd.footer.crtr_ver);
		return;
	}

	allocated = 0;
	full      = 0;

	for (i = 0; i < s->bat.bat.entries; i++) {
		if (bat_entry(s, i) != DD_BLK_UNUSED)
			allocated++;
		if (test_batmap(s, i))
			full++;
	}

	DPRINTF("%s version: %s 0x%08x, b: %u, a: %u, f: %u, n: %"PRIu64"\n",
		s->vhd.file, buf, s->vhd.footer.crtr_ver, s->bat.bat.entries,
		allocated, full, s->next_db);
}

static int
__vhd_open(td_driver_t *driver, const char *name, vhd_flag_t flags)
{
        int i, o_flags, err;
	struct vhd_state *s;

        DBG(TLOG_INFO, "vhd_open: %s\n", name);
	if (test_vhd_flag(flags, VHD_FLAG_OPEN_STRICT))
		libvhd_set_log_level(1);

	s = (struct vhd_state *)driver->data;
	memset(s, 0, sizeof(struct vhd_state));

	s->flags  = flags;
	s->driver = driver;

	err = vhd_initialize(s);
	if (err)
		return err;

	o_flags = ((test_vhd_flag(flags, VHD_FLAG_OPEN_RDONLY)) ? 
		   VHD_OPEN_RDONLY : VHD_OPEN_RDWR);
	if ((test_vhd_flag(flags, VHD_FLAG_OPEN_RDONLY) ||
                test_vhd_flag(flags, VHD_FLAG_OPEN_LOCAL_CACHE)) &&
	    test_vhd_flag(flags, VHD_FLAG_OPEN_NO_O_DIRECT))
		set_vhd_flag(o_flags, VHD_OPEN_CACHED);

	if (test_vhd_flag(flags, VHD_FLAG_OPEN_STRICT))
		set_vhd_flag(o_flags, VHD_OPEN_STRICT);

	err = vhd_open(&s->vhd, name, o_flags);
	if (err) {
		libvhd_set_log_level(1);
		err = vhd_open(&s->vhd, name, o_flags);
		if (err) {
			EPRINTF("Unable to open [%s] (%d)!\n", name, err);
			return err;
		}
	}

	err = vhd_check_version(s);
	if (err)
		goto fail;

	s->spb = s->spp = 1;

	if (vhd_type_dynamic(&s->vhd)) {
		err = vhd_initialize_dynamic_disk(s);
		if (err)
			goto fail;
	}

	vhd_log_open(s);

	SPB = s->spb;

	s->vreq_free_count = VHD_REQS_DATA;
	for (i = 0; i < VHD_REQS_DATA; i++)
		s->vreq_free[i] = s->vreq_list + i;

	driver->info.size        = s->vhd.footer.curr_size >> VHD_SECTOR_SHIFT;
	driver->info.sector_size = VHD_SECTOR_SIZE;
	driver->info.info        = 0;

        DBG(TLOG_INFO, "vhd_open: done (sz:%"PRIu64", sct:%lu, inf:%u)\n",
	    driver->info.size, driver->info.sector_size, driver->info.info);

	if (test_vhd_flag(flags, VHD_FLAG_OPEN_STRICT) && 
	    !test_vhd_flag(flags, VHD_FLAG_OPEN_RDONLY)) {
		err = vhd_kill_footer(s);
		if (err) {
			DPRINTF("ERROR killing footer: %d\n", err);
			goto fail;
		}
		s->writes++;
	}

        return 0;

 fail:
	vhd_free_bat(s);
	vhd_free_bitmap_cache(s);
	vhd_close(&s->vhd);
	vhd_free(s);
	return err;
}

static int
_vhd_open(td_driver_t *driver, const char *name, td_flag_t flags)
{
	vhd_flag_t vhd_flags = 0;

	if (flags & TD_OPEN_RDONLY)
		vhd_flags |= VHD_FLAG_OPEN_RDONLY;
	if (flags & TD_OPEN_NO_O_DIRECT)
		vhd_flags |= VHD_FLAG_OPEN_NO_O_DIRECT;
	if (flags & TD_OPEN_QUIET)
		vhd_flags |= VHD_FLAG_OPEN_QUIET;
	if (flags & TD_OPEN_STRICT)
		vhd_flags |= VHD_FLAG_OPEN_STRICT;
	if (flags & TD_OPEN_QUERY)
		vhd_flags |= (VHD_FLAG_OPEN_QUERY  |
			      VHD_FLAG_OPEN_QUIET  |
			      VHD_FLAG_OPEN_RDONLY |
			      VHD_FLAG_OPEN_NO_CACHE);
    if (flags & TD_OPEN_LOCAL_CACHE)
        vhd_flags |= VHD_FLAG_OPEN_LOCAL_CACHE;

	/* pre-allocate for all but NFS and LVM storage */
	driver->storage = tapdisk_storage_type(name);

	if (driver->storage != TAPDISK_STORAGE_TYPE_NFS &&
	    driver->storage != TAPDISK_STORAGE_TYPE_LVM)
		vhd_flags |= VHD_FLAG_OPEN_PREALLOCATE;

	return __vhd_open(driver, name, vhd_flags);
}

static void
vhd_log_close(struct vhd_state *s)
{
	uint32_t i, allocated, full;

	if (test_vhd_flag(s->flags, VHD_FLAG_OPEN_QUIET))
		return;

	allocated = 0;
	full      = 0;

	for (i = 0; i < s->bat.bat.entries; i++) {
		if (bat_entry(s, i) != DD_BLK_UNUSED)
			allocated++;
		if (test_batmap(s, i))
			full++;
	}

	DPRINTF("%s: b: %u, a: %u, f: %u, n: %"PRIu64"\n",
		s->vhd.file, s->bat.bat.entries, allocated, full, s->next_db);
}

static int
_vhd_close(td_driver_t *driver)
{
	int err;
	struct vhd_state *s;
	
	DBG(TLOG_WARN, "vhd_close\n");
	s = (struct vhd_state *)driver->data;

	DPRINTF("gaps written/skipped: %ld/%ld\n", 
			s->debug_done_redundant_writes,
			s->debug_skipped_redundant_writes);

	/* don't write footer if tapdisk is read-only */
	if (test_vhd_flag(s->flags, VHD_FLAG_OPEN_RDONLY))
		goto free;
	
	/* 
	 * write footer if:
	 *   - we killed it on open (opened with strict) 
	 *   - we've written data since opening
	 */
	if (test_vhd_flag(s->flags, VHD_FLAG_OPEN_STRICT) || s->writes) {
		memcpy(&s->vhd.bat, &s->bat.bat, sizeof(vhd_bat_t));
		err = vhd_write_footer(&s->vhd, &s->vhd.footer);
		memset(&s->vhd.bat, 0, sizeof(vhd_bat_t));

		if (err)
			EPRINTF("writing %s footer: %d\n", s->vhd.file, err);

		if (!vhd_has_batmap(&s->vhd))
			goto free;

		err = vhd_write_batmap(&s->vhd, &s->bat.batmap);
		if (err)
			EPRINTF("writing %s batmap: %d\n", s->vhd.file, err);
	}

 free:
	vhd_log_close(s);
	vhd_free_bat(s);
	vhd_free_bitmap_cache(s);
	vhd_close(&s->vhd);
	vhd_free(s);

	memset(s, 0, sizeof(struct vhd_state));

	return 0;
}

int
vhd_validate_parent(td_driver_t *child_driver,
		    td_driver_t *parent_driver, td_flag_t flags)
{
	struct vhd_state *child  = (struct vhd_state *)child_driver->data;
	struct vhd_state *parent;

	if (parent_driver->type != DISK_TYPE_VHD) {
		if (child_driver->type != DISK_TYPE_VHD)
			return -EINVAL;
		if (child->vhd.footer.type != HD_TYPE_DIFF)
			return -EINVAL;
		if (!vhd_parent_raw(&child->vhd))
			return -EINVAL;
		return 0;
	}

	parent = (struct vhd_state *)parent_driver->data;

	/* 
	 * This check removed because of cases like:
	 *   - parent VHD marked as 'hidden'
	 *   - parent VHD modified during coalesce
	 */
	/*
	if (stat(parent->vhd.file, &stats)) {
		DPRINTF("ERROR stating parent file %s\n", parent->vhd.file);
		return -errno;
	}

	if (child->hdr.prt_ts != vhd_time(stats.st_mtime)) {
		DPRINTF("ERROR: parent file has been modified since "
			"snapshot.  Child image no longer valid.\n");
		return -EINVAL;
	}
	*/

	if (uuid_compare(child->vhd.header.prt_uuid, parent->vhd.footer.uuid)) {
		DPRINTF("ERROR: %s: %s, %s: parent uuid has changed since "
			"snapshot.  Child image no longer valid.\n",
			__func__, child->vhd.file, parent->vhd.file);
		return -EINVAL;
	}

	/* TODO: compare sizes */
	
	return 0;
}

int
vhd_get_parent_id(td_driver_t *driver, td_disk_id_t *id)
{
	int err;
	char *parent;
	struct vhd_state *s;
	int flags;

	DBG(TLOG_DBG, "\n");
	flags = id->flags;
	memset(id, 0, sizeof(td_disk_id_t));

	s = (struct vhd_state *)driver->data;

	if (s->vhd.footer.type != HD_TYPE_DIFF)
		return TD_NO_PARENT;

	err = vhd_parent_locator_get(&s->vhd, &parent);
	if (err)
		return err;

	id->name   = parent;
	id->type   = vhd_parent_raw(&s->vhd) ? DISK_TYPE_AIO : DISK_TYPE_VHD;
	id->flags  = flags|TD_OPEN_SHAREABLE|TD_OPEN_RDONLY;

	return 0;
}

static inline void
clear_req_list(struct vhd_req_list *list)
{
	list->head = list->tail = NULL;
}

static inline void
add_to_tail(struct vhd_req_list *list, struct vhd_request *e)
{
	if (!list->head) 
		list->head = list->tail = e;
	else 
		list->tail = list->tail->next = e;
}

static inline int
remove_from_req_list(struct vhd_req_list *list, struct vhd_request *e)
{
	struct vhd_request *i = list->head;

	if (list->head == e) {
		if (list->tail == e)
			clear_req_list(list);
		else
			list->head = list->head->next;
		return 0;
	}

	while (i->next) {
		if (i->next == e) {
			if (list->tail == e) {
				i->next = NULL;
				list->tail = i;
			} else
				i->next = i->next->next;
			return 0;
		}
		i = i->next;
	}

	return -EINVAL;
}

static inline void
init_vhd_request(struct vhd_state *s, struct vhd_request *req)
{
	memset(req, 0, sizeof(struct vhd_request));
	req->state = s;
}

static inline void
init_tx(struct vhd_transaction *tx)
{
	memset(tx, 0, sizeof(struct vhd_transaction));
}

static inline void
add_to_transaction(struct vhd_transaction *tx, struct vhd_request *r)
{
	ASSERT(!tx->closed);

	r->tx = tx;
	tx->started++;
	add_to_tail(&tx->requests, r);
	set_vhd_flag(tx->status, VHD_FLAG_TX_LIVE);

	DBG(TLOG_DBG, "blk: 0x%04"PRIx64", lsec: 0x%08"PRIx64", tx: %p, "
	    "started: %d, finished: %d, status: %u\n",
	    r->treq.sec / SPB, r->treq.sec, tx,
	    tx->started, tx->finished, tx->status);
}

static inline int
transaction_completed(struct vhd_transaction *tx)
{
	return (tx->started == tx->finished);
}

static inline void
init_bat(struct vhd_state *s)
{
	s->bat.req.tx     = NULL;
	s->bat.req.next   = NULL;
	s->bat.req.error  = 0;
	s->bat.pbw_blk    = 0;
	s->bat.pbw_offset = 0;
	s->bat.status     = 0;
}

static inline void
lock_bat(struct vhd_state *s)
{
	set_vhd_flag(s->bat.status, VHD_FLAG_BAT_LOCKED);
}

static inline void
unlock_bat(struct vhd_state *s)
{
	clear_vhd_flag(s->bat.status, VHD_FLAG_BAT_LOCKED);
}

static inline int
bat_locked(struct vhd_state *s)
{
	return test_vhd_flag(s->bat.status, VHD_FLAG_BAT_LOCKED);
}

static inline void
init_vhd_bitmap(struct vhd_state *s, struct vhd_bitmap *bm)
{
	bm->blk    = 0;
	bm->seqno  = 0;
	bm->status = 0;
	init_tx(&bm->tx);
	clear_req_list(&bm->queue);
	clear_req_list(&bm->waiting);
	memset(bm->map, 0, vhd_sectors_to_bytes(s->bm_secs));
	memset(bm->shadow, 0, vhd_sectors_to_bytes(s->bm_secs));
	init_vhd_request(s, &bm->req);
}

static inline struct vhd_bitmap *
get_bitmap(struct vhd_state *s, uint32_t block)
{
	int i;
	struct vhd_bitmap *bm;

	for (i = 0; i < VHD_CACHE_SIZE; i++) {
		bm = s->bitmap[i];
		if (bm && bm->blk == block)
			return bm;
	}

	return NULL;
}

static inline void
lock_bitmap(struct vhd_bitmap *bm)
{
	set_vhd_flag(bm->status, VHD_FLAG_BM_LOCKED);
}

static inline void
unlock_bitmap(struct vhd_bitmap *bm)
{
	clear_vhd_flag(bm->status, VHD_FLAG_BM_LOCKED);
}

static inline int
bitmap_locked(struct vhd_bitmap *bm)
{
	return test_vhd_flag(bm->status, VHD_FLAG_BM_LOCKED);
}

static inline int
bitmap_valid(struct vhd_bitmap *bm)
{
	return !test_vhd_flag(bm->status, VHD_FLAG_BM_READ_PENDING);
}

static inline int
bitmap_in_use(struct vhd_bitmap *bm)
{
	return (test_vhd_flag(bm->status, VHD_FLAG_BM_READ_PENDING)  ||
		test_vhd_flag(bm->status, VHD_FLAG_BM_WRITE_PENDING) ||
		test_vhd_flag(bm->tx.status, VHD_FLAG_TX_UPDATE_BAT) ||
		bm->waiting.head || bm->tx.requests.head || bm->queue.head);
}

static inline int
bitmap_full(struct vhd_state *s, struct vhd_bitmap *bm)
{
	int i, n;

	n = s->spb >> 3;
	for (i = 0; i < n; i++)
		if (bm->map[i] != (char)0xFF)
			return 0;

	DBG(TLOG_DBG, "bitmap 0x%04x full\n", bm->blk);
	return 1;
}

static struct vhd_bitmap *
remove_lru_bitmap(struct vhd_state *s)
{
	int i, idx = 0;
	uint64_t seq = s->bm_lru;
	struct vhd_bitmap *bm, *lru = NULL;

	for (i = 0; i < VHD_CACHE_SIZE; i++) {
		bm = s->bitmap[i];
		if (bm && bm->seqno < seq && !bitmap_locked(bm)) {
			idx = i;
			lru = bm;
			seq = lru->seqno;
		}
	}

	if (lru) {
		s->bitmap[idx] = NULL;
		ASSERT(!bitmap_in_use(lru));
	}

	return  lru;
}

static int
alloc_vhd_bitmap(struct vhd_state *s, struct vhd_bitmap **bitmap, uint32_t blk)
{
	struct vhd_bitmap *bm;
	
	*bitmap = NULL;

	if (s->bm_free_count > 0) {
		bm = s->bitmap_free[--s->bm_free_count];
	} else {
		bm = remove_lru_bitmap(s);
		if (!bm)
			return -EBUSY;
	}

	init_vhd_bitmap(s, bm);
	bm->blk = blk;
	*bitmap = bm;

	return 0;
}

static inline uint64_t
__bitmap_lru_seqno(struct vhd_state *s)
{
	int i;
	struct vhd_bitmap *bm;

	if (s->bm_lru == 0xffffffff) {
		s->bm_lru = 0;
		for (i = 0; i < VHD_CACHE_SIZE; i++) {
			bm = s->bitmap[i];
			if (bm) {
				bm->seqno >>= 1;
				if (bm->seqno > s->bm_lru)
					s->bm_lru = bm->seqno;
			}
		}
	}

	return ++s->bm_lru;
}

static inline void
touch_bitmap(struct vhd_state *s, struct vhd_bitmap *bm)
{
	bm->seqno = __bitmap_lru_seqno(s);
}

static inline void
install_bitmap(struct vhd_state *s, struct vhd_bitmap *bm)
{
	int i;
	for (i = 0; i < VHD_CACHE_SIZE; i++) {
		if (!s->bitmap[i]) {
			touch_bitmap(s, bm);
			s->bitmap[i] = bm;
			return;
		}
	}

	ASSERT(0);
}

static inline void
free_vhd_bitmap(struct vhd_state *s, struct vhd_bitmap *bm)
{
	int i;

	for (i = 0; i < VHD_CACHE_SIZE; i++)
		if (s->bitmap[i] == bm)
			break;

	ASSERT(!bitmap_locked(bm));
	ASSERT(!bitmap_in_use(bm));
	ASSERT(i < VHD_CACHE_SIZE);

	s->bitmap[i] = NULL;
	s->bitmap_free[s->bm_free_count++] = bm;
}

static int
read_bitmap_cache(struct vhd_state *s, uint64_t sector, uint8_t op)
{
	uint32_t blk, sec;
	struct vhd_bitmap *bm;

	/* in fixed disks, every block is present */
	if (s->vhd.footer.type == HD_TYPE_FIXED) 
		return VHD_BM_BIT_SET;

	/* the extent the logical sector falls in */
	blk = sector / s->spb;

	/* offset within the extent the logical sector is located */
	sec = sector % s->spb;

	if (blk > s->vhd.header.max_bat_size) {
		DPRINTF("ERROR: sec %"PRIu64" out of range, op = %d\n",
			sector, op);
		return -EINVAL;
	}

	if (bat_entry(s, blk) == DD_BLK_UNUSED) {
		if (op == VHD_OP_DATA_WRITE &&
		    s->bat.pbw_blk != blk && bat_locked(s))
			return VHD_BM_BAT_LOCKED;

		return VHD_BM_BAT_CLEAR;
	}

	if (test_batmap(s, blk)) {
		DBG(TLOG_DBG, "batmap set for 0x%04x\n", blk);
		return VHD_BM_BIT_SET;
	}

	bm = get_bitmap(s, blk);
	if (!bm)
		return VHD_BM_NOT_CACHED;

	/* bump lru count */
	touch_bitmap(s, bm);

	if (test_vhd_flag(bm->status, VHD_FLAG_BM_READ_PENDING))
		return VHD_BM_READ_PENDING;

	return ((vhd_bitmap_test(&s->vhd, bm->map, sec)) ? 
		VHD_BM_BIT_SET : VHD_BM_BIT_CLEAR);
}

static int
read_bitmap_cache_span(struct vhd_state *s, 
		       uint64_t sector, int nr_secs, int value)
{
	int ret;
	uint32_t blk, sec;
	struct vhd_bitmap *bm;

	/* in fixed disks, every block is present */
	if (s->vhd.footer.type == HD_TYPE_FIXED) 
		return nr_secs;

	sec = sector % s->spb;
	blk = sector / s->spb;

	if (test_batmap(s, blk))
		return MIN(nr_secs, s->spb - sec);

	bm  = get_bitmap(s, blk);
	
	ASSERT(bm && bitmap_valid(bm));

	for (ret = 0; sec < s->spb && ret < nr_secs; sec++, ret++)
		if (vhd_bitmap_test(&s->vhd, bm->map, sec) != value)
			break;

	return ret;
}

static inline struct vhd_request *
alloc_vhd_request(struct vhd_state *s)
{
	struct vhd_request *req = NULL;
	
	if (s->vreq_free_count > 0) {
		req = s->vreq_free[--s->vreq_free_count];
		ASSERT(req->treq.secs == 0);
		init_vhd_request(s, req);
		return req;
	}

	return NULL;
}

static inline void
free_vhd_request(struct vhd_state *s, struct vhd_request *req)
{
	memset(req, 0, sizeof(struct vhd_request));
	s->vreq_free[s->vreq_free_count++] = req;
}

static inline void
aio_read(struct vhd_state *s, struct vhd_request *req, uint64_t offset)
{
	struct tiocb *tiocb = &req->tiocb;

	td_prep_read(tiocb, s->vhd.fd, req->treq.buf,
		     vhd_sectors_to_bytes(req->treq.secs),
		     offset, vhd_complete, req);
	td_queue_tiocb(s->driver, tiocb);

	s->queued++;
	s->reads++;
	s->read_size += req->treq.secs;
	TRACE(s);
}

static inline void
aio_write(struct vhd_state *s, struct vhd_request *req, uint64_t offset)
{
	struct tiocb *tiocb = &req->tiocb;

	td_prep_write(tiocb, s->vhd.fd, req->treq.buf,
		      vhd_sectors_to_bytes(req->treq.secs),
		      offset, vhd_complete, req);
	td_queue_tiocb(s->driver, tiocb);

	s->queued++;
	s->writes++;
	s->write_size += req->treq.secs;
	TRACE(s);
}

/**
 * Reserves a new extent.
 *
 * @returns a 64-bit unsigned integer where the error code is stored in the
 * upper 32 bits and the reserved block number is stored in the lower 32 bits.
 * If an error is returned (the upper 32 bits are not zero), the lower 32 bits
 * are undefined.
 */
static inline uint64_t
reserve_new_block(struct vhd_state *s, uint32_t blk)
{
	int gap = 0;

	ASSERT(!test_vhd_flag(s->bat.status, VHD_FLAG_BAT_WRITE_STARTED));

	/* data region of segment should begin on page boundary */
	if ((s->next_db + s->bm_secs) % s->spp)
		gap = (s->spp - ((s->next_db + s->bm_secs) % s->spp));

	if (s->next_db + gap > UINT_MAX)
		return (uint64_t)ENOSPC << 32;

	s->bat.pbw_blk    = blk;
	s->bat.pbw_offset = s->next_db + gap;

	return s->next_db;
}

static int
schedule_bat_write(struct vhd_state *s)
{
	int i;
	uint32_t blk;
	char *buf;
	uint64_t offset;
	struct vhd_request *req;

	ASSERT(bat_locked(s));

	req = &s->bat.req;
	buf = s->bat.bat_buf;
	blk = s->bat.pbw_blk;

	init_vhd_request(s, req);
	memcpy(buf, &bat_entry(s, blk - (blk % 128)), 512);

	((uint32_t *)buf)[blk % 128] = s->bat.pbw_offset;

	for (i = 0; i < 128; i++)
		BE32_OUT(&((uint32_t *)buf)[i]);

	offset         = s->vhd.header.table_offset + (blk - (blk % 128)) * 4;
	req->treq.secs = 1;
	req->treq.buf  = buf;
	req->op        = VHD_OP_BAT_WRITE;
	req->next      = NULL;

	aio_write(s, req, offset);
	set_vhd_flag(s->bat.status, VHD_FLAG_BAT_WRITE_STARTED);

	DBG(TLOG_DBG, "blk: 0x%04x, pbwo: 0x%08"PRIx64", "
	    "table_offset: 0x%08"PRIx64"\n", blk, s->bat.pbw_offset, offset);

	return 0;
}

static void
schedule_zero_bm_write(struct vhd_state *s,
		       struct vhd_bitmap *bm, uint64_t lb_end)
{
	uint64_t offset;
	struct vhd_request *req = &s->bat.zero_req;

	init_vhd_request(s, req);

	offset         = vhd_sectors_to_bytes(lb_end);
	req->op        = VHD_OP_ZERO_BM_WRITE;
	req->treq.sec  = s->bat.pbw_blk * s->spb;
	req->treq.secs = (s->bat.pbw_offset - lb_end) + s->bm_secs;
	req->treq.buf  = vhd_zeros(vhd_sectors_to_bytes(req->treq.secs));
	req->next      = NULL;

	DBG(TLOG_DBG, "blk: 0x%04x, writing zero bitmap at 0x%08"PRIx64"\n",
	    s->bat.pbw_blk, offset);

	lock_bitmap(bm);
	add_to_transaction(&bm->tx, req);
	aio_write(s, req, offset);
}

/* This is a performance optimization. When writing sequentially into full 
 * blocks, skipping (up-to-date) bitmaps causes an approx. 25% reduction in 
 * throughput. To prevent skipping, we issue redundant writes into the (padded) 
 * bitmap area just to make all writes sequential. This will help VHDs on raw 
 * block devices, while the FS-based VHDs shouldn't suffer much.
 *
 * Note that it only makes sense to perform this reduntant bitmap write if the 
 * block is completely full (i.e. the batmap entry is set). If the block is not 
 * completely full then one of the following two things will be true:
 *  1. we'll either be allocating new sectors in this block and writing its
 *     bitmap transactionally, which will be slow anyways; or
 *  2. the IO will be skipping over the unallocated sectors again, so the
 *     pattern will not be sequential anyways
 * In either case a redundant bitmap write becomes pointless. This fact 
 * simplifies the implementation of redundant writes: since we know the bitmap 
 * cannot be updated by anyone else, we don't have to worry about transactions 
 * or potential write conflicts.
 * */
static void
schedule_redundant_bm_write(struct vhd_state *s, uint32_t blk)
{
	uint64_t offset;
	struct vhd_request *req;

	ASSERT(s->vhd.footer.type != HD_TYPE_FIXED);
	ASSERT(test_batmap(s, blk));

	req = alloc_vhd_request(s);
	if (!req) 
		return;

	req->treq.buf = s->padbm_buf;

	offset = bat_entry(s, blk);
	ASSERT(offset != DD_BLK_UNUSED);
	offset <<= VHD_SECTOR_SHIFT;
	offset -= s->padbm_size - (s->bm_secs << VHD_SECTOR_SHIFT);

	req->op        = VHD_OP_REDUNDANT_BM_WRITE;
	req->treq.sec  = blk * s->spb;
	req->treq.secs = s->padbm_size >> VHD_SECTOR_SHIFT;
	req->next      = NULL;

	DBG(TLOG_DBG, "blk: %u, writing redundant bitmap at %" PRIu64 "\n",
	    blk, offset);

	aio_write(s, req, offset);
}

static int
update_bat(struct vhd_state *s, uint32_t blk)
{
	int err;
	uint64_t lb_end;
	struct vhd_bitmap *bm;

	ASSERT(bat_entry(s, blk) == DD_BLK_UNUSED);
	
	if (bat_locked(s)) {
		ASSERT(s->bat.pbw_blk == blk);
		return 0;
	}

	/* empty bitmap could already be in
	 * cache if earlier bat update failed */
	bm = get_bitmap(s, blk);
	if (!bm) {
		/* install empty bitmap in cache */
		err = alloc_vhd_bitmap(s, &bm, blk);
		if (err) 
			return err;

		install_bitmap(s, bm);
	}

	lock_bat(s);
	lb_end = reserve_new_block(s, blk);
	if (lb_end >> 32) {
		unlock_bat(s);
		return -(lb_end >> 32);
	}
	schedule_zero_bm_write(s, bm, lb_end);
	set_vhd_flag(bm->tx.status, VHD_FLAG_TX_UPDATE_BAT);

	return 0;
}

static int
allocate_block(struct vhd_state *s, uint32_t blk)
{
	int err, gap;
	uint64_t offset, size;
	struct vhd_bitmap *bm;
	ssize_t count;
	uint64_t next_db;

	ASSERT(bat_entry(s, blk) == DD_BLK_UNUSED);

	if (bat_locked(s)) {
		ASSERT(s->bat.pbw_blk == blk);
		if (s->bat.req.error)
			return -EBUSY;
		return 0;
	}

	gap     = 0;
	offset  = vhd_sectors_to_bytes(s->next_db);
	next_db = s->next_db;

	/* data region of segment should begin on page boundary */
	if ((next_db + s->bm_secs) % s->spp) {
		gap = (s->spp - ((next_db + s->bm_secs) % s->spp));
		next_db += gap;
	}

	if (next_db > UINT_MAX)
		return -ENOSPC;

	s->next_db = next_db;

	s->bat.pbw_blk = blk;
	s->bat.pbw_offset = s->next_db;

	DBG(TLOG_DBG, "blk: 0x%04x, pbwo: 0x%08"PRIx64"\n",
	    blk, s->bat.pbw_offset);

	if (lseek(s->vhd.fd, offset, SEEK_SET) == (off_t)-1) {
		ERR(s, -errno, "lseek failed\n");
		return -errno;
	}

	size  = vhd_sectors_to_bytes(s->spb + s->bm_secs + gap);
	count = write(s->vhd.fd, vhd_zeros(size), size);
	if (count != size) {
		err = count < 0 ? -errno : -ENOSPC;
		ERR(s, -errno,
		    "write failed (%zd, offset %"PRIu64")\n", count, offset);
		return err;
	}

	/* empty bitmap could already be in
	 * cache if earlier bat update failed */
	bm = get_bitmap(s, blk);
	if (!bm) {
		/* install empty bitmap in cache */
		err = alloc_vhd_bitmap(s, &bm, blk);
		if (err) 
			return err;

		install_bitmap(s, bm);
	}

	lock_bat(s);
	lock_bitmap(bm);
	schedule_bat_write(s);
	add_to_transaction(&bm->tx, &s->bat.req);

	return 0;
}

static int 
schedule_data_read(struct vhd_state *s, td_request_t treq, vhd_flag_t flags)
{
	uint64_t offset;
	uint32_t blk = 0, sec = 0;
	struct vhd_bitmap  *bm;
	struct vhd_request *req;

	if (s->vhd.footer.type == HD_TYPE_FIXED) {
		offset = vhd_sectors_to_bytes(treq.sec);
		goto make_request;
	}

	blk    = treq.sec / s->spb;
	sec    = treq.sec % s->spb;
	bm     = get_bitmap(s, blk);
	offset = bat_entry(s, blk);

	ASSERT(offset != DD_BLK_UNUSED);
	ASSERT(test_batmap(s, blk) || (bm && bitmap_valid(bm)));

	offset += s->bm_secs + sec;
	offset  = vhd_sectors_to_bytes(offset);

 make_request:
	req = alloc_vhd_request(s);
	if (!req) 
		return -EBUSY;

	req->treq  = treq;
	req->flags = flags;
	req->op    = VHD_OP_DATA_READ;
	req->next  = NULL;

	aio_read(s, req, offset);

	DBG(TLOG_DBG, "%s: lsec: 0x%08"PRIx64", blk: 0x%04x, sec: 0x%04x, "
	    "nr_secs: 0x%04x, offset: 0x%08"PRIx64", flags: 0x%08x, buf: %p\n",
	    s->vhd.file, treq.sec, blk, sec, treq.secs, offset, req->flags,
	    treq.buf);

	return 0;
}

static int
schedule_data_write(struct vhd_state *s, td_request_t treq, vhd_flag_t flags)
{
	int err;
	uint64_t offset;
	uint32_t blk = 0, sec = 0;
	struct vhd_bitmap  *bm = NULL;
	struct vhd_request *req;

	if (s->vhd.footer.type == HD_TYPE_FIXED) {
		offset = vhd_sectors_to_bytes(treq.sec);
		goto make_request;
	}

	blk    = treq.sec / s->spb;
	sec    = treq.sec % s->spb;
	offset = bat_entry(s, blk);

	if (test_vhd_flag(flags, VHD_FLAG_REQ_UPDATE_BAT)) {
		if (test_vhd_flag(s->flags, VHD_FLAG_OPEN_PREALLOCATE))
			err = allocate_block(s, blk);
		else
			err = update_bat(s, blk);

		if (err)
			return err;

		offset = s->bat.pbw_offset;
	}

	offset += s->bm_secs + sec;
	offset  = vhd_sectors_to_bytes(offset);

 make_request:
	req = alloc_vhd_request(s);
	if (!req)
		return -EBUSY;

	req->treq  = treq;
	req->flags = flags;
	req->op    = VHD_OP_DATA_WRITE;
	req->next  = NULL;

	if (test_vhd_flag(flags, VHD_FLAG_REQ_UPDATE_BITMAP)) {
		bm = get_bitmap(s, blk);
		ASSERT(bm && bitmap_valid(bm));
		lock_bitmap(bm);

		if (bm->tx.closed) {
			add_to_tail(&bm->queue, req);
			set_vhd_flag(req->flags, VHD_FLAG_REQ_QUEUED);
		} else
			add_to_transaction(&bm->tx, req);
	} else if (sec == 0 && 	/* first sector inside data block */
		   s->vhd.footer.type != HD_TYPE_FIXED && 
		   bat_entry(s, blk) != s->first_db &&
		   test_batmap(s, blk))
		schedule_redundant_bm_write(s, blk);

	aio_write(s, req, offset);

	DBG(TLOG_DBG, "%s: lsec: 0x%08"PRIx64", blk: 0x%04x, sec: 0x%04x, "
	    "nr_secs: 0x%04x, offset: 0x%08"PRIx64", flags: 0x%08x\n",
	    s->vhd.file, treq.sec, blk, sec, treq.secs, offset, req->flags);

	return 0;
}

static int 
schedule_bitmap_read(struct vhd_state *s, uint32_t blk)
{
	int err;
	uint64_t offset;
	struct vhd_bitmap  *bm;
	struct vhd_request *req = NULL;

	ASSERT(vhd_type_dynamic(&s->vhd));

	offset = bat_entry(s, blk);

	ASSERT(offset != DD_BLK_UNUSED);
	ASSERT(!get_bitmap(s, blk));

	offset = vhd_sectors_to_bytes(offset);

	err = alloc_vhd_bitmap(s, &bm, blk);
	if (err)
		return err;

	req = &bm->req;
	init_vhd_request(s, req);

	req->treq.sec  = blk * s->spb;
	req->treq.secs = s->bm_secs;
	req->treq.buf  = bm->map;
	req->treq.cb   = NULL;
	req->op        = VHD_OP_BITMAP_READ;
	req->next      = NULL;

	aio_read(s, req, offset);
	lock_bitmap(bm);
	install_bitmap(s, bm);
	set_vhd_flag(bm->status, VHD_FLAG_BM_READ_PENDING);

	DBG(TLOG_DBG, "%s: lsec: 0x%08"PRIx64", blk: 0x%04x, nr_secs: 0x%04x, "
	    "offset: 0x%08"PRIx64"\n", s->vhd.file, req->treq.sec, blk,
	    req->treq.secs, offset);

	return 0;
}

static void
schedule_bitmap_write(struct vhd_state *s, uint32_t blk)
{
	uint64_t offset;
	struct vhd_bitmap  *bm;
	struct vhd_request *req;

	bm     = get_bitmap(s, blk);
	offset = bat_entry(s, blk);

	ASSERT(vhd_type_dynamic(&s->vhd));
	ASSERT(bm && bitmap_valid(bm) &&
	       !test_vhd_flag(bm->status, VHD_FLAG_BM_WRITE_PENDING));

	if (offset == DD_BLK_UNUSED) {
		ASSERT(bat_locked(s) && s->bat.pbw_blk == blk);
		offset = s->bat.pbw_offset;
	}
	
	offset = vhd_sectors_to_bytes(offset);

	req = &bm->req;
	init_vhd_request(s, req);

	req->treq.sec  = blk * s->spb;
	req->treq.secs = s->bm_secs;
	req->treq.buf  = bm->shadow;
	req->treq.cb   = NULL;
	req->op        = VHD_OP_BITMAP_WRITE;
	req->next      = NULL;

	aio_write(s, req, offset);
	lock_bitmap(bm);
	touch_bitmap(s, bm);     /* bump lru count */
	set_vhd_flag(bm->status, VHD_FLAG_BM_WRITE_PENDING);

	DBG(TLOG_DBG, "%s: blk: 0x%04x, sec: 0x%08"PRIx64", nr_secs: 0x%04x, "
	    "offset: 0x%"PRIx64"\n", s->vhd.file, blk, req->treq.sec,
	    req->treq.secs, offset);
}

/* 
 * queued requests will be submitted once the bitmap
 * describing them is read and the requests are validated. 
 */
static int
__vhd_queue_request(struct vhd_state *s, uint8_t op, td_request_t treq)
{
	uint32_t blk;
	struct vhd_bitmap  *bm;
	struct vhd_request *req;

	ASSERT(vhd_type_dynamic(&s->vhd));

	blk = treq.sec / s->spb;
	bm  = get_bitmap(s, blk);

	ASSERT(bm && test_vhd_flag(bm->status, VHD_FLAG_BM_READ_PENDING));

	req = alloc_vhd_request(s);
	if (!req)
		return -EBUSY;

	req->treq = treq;
	req->op   = op;
	req->next = NULL;

	add_to_tail(&bm->waiting, req);
	lock_bitmap(bm);

	DBG(TLOG_DBG, "%s: lsec: 0x%08"PRIx64", blk: 0x%04x nr_secs: 0x%04x, "
	    "op: %u\n", s->vhd.file, treq.sec, blk, treq.secs, op);

	TRACE(s);
	return 0;
}

static void
vhd_queue_read(td_driver_t *driver, td_request_t treq)
{
	struct vhd_state *s = (struct vhd_state *)driver->data;

	DBG(TLOG_DBG, "%s: lsec: 0x%08"PRIx64", secs: 0x%04x (seg: %d)\n",
	    s->vhd.file, treq.sec, treq.secs, treq.sidx);

	while (treq.secs) {
		int err;
		td_request_t clone;

		err   = 0;
		clone = treq;

		switch (read_bitmap_cache(s, clone.sec, VHD_OP_DATA_READ)) {
		case -EINVAL:
			err = -EINVAL;
			goto fail;

		case VHD_BM_BAT_CLEAR:
			clone.secs = MIN(clone.secs, s->spb - (clone.sec % s->spb));
			td_forward_request(clone);
			break;

		case VHD_BM_BIT_CLEAR:
			clone.secs = read_bitmap_cache_span(s, clone.sec, clone.secs, 0);
			td_forward_request(clone);
			break;

		case VHD_BM_BIT_SET:
			clone.secs = read_bitmap_cache_span(s, clone.sec, clone.secs, 1);
			err = schedule_data_read(s, clone, 0);
			if (err)
				goto fail;
			break;

		case VHD_BM_NOT_CACHED:
			err = schedule_bitmap_read(s, clone.sec / s->spb);
			if (err)
				goto fail;

			clone.secs = MIN(clone.secs, s->spb - (clone.sec % s->spb));
			err = __vhd_queue_request(s, VHD_OP_DATA_READ, clone);
			if (err)
				goto fail;
			break;

		case VHD_BM_READ_PENDING:
			clone.secs = MIN(clone.secs, s->spb - (clone.sec % s->spb));
			err = __vhd_queue_request(s, VHD_OP_DATA_READ, clone);
			if (err)
				goto fail;
			break;

		case VHD_BM_BAT_LOCKED:
		default:
			ASSERT(0);
			break;
		}

		treq.sec  += clone.secs;
		treq.secs -= clone.secs;
		treq.buf  += vhd_sectors_to_bytes(clone.secs);
		continue;

	fail:
		clone.secs = treq.secs;
		td_complete_request(clone, err);
		break;
	}
}

static void
vhd_queue_write(td_driver_t *driver, td_request_t treq)
{
	struct vhd_state *s = (struct vhd_state *)driver->data;

	DBG(TLOG_DBG, "%s: lsec: 0x%08"PRIx64", secs: 0x%04x, (seg: %d)\n",
	    s->vhd.file, treq.sec, treq.secs, treq.sidx);

	while (treq.secs) {
		int err;
		uint8_t flags;
		td_request_t clone;

		err   = 0;
		flags = 0;
		clone = treq;

		switch (read_bitmap_cache(s, clone.sec, VHD_OP_DATA_WRITE)) {
		case -EINVAL:
			err = -EINVAL;
			goto fail;

		case VHD_BM_BAT_LOCKED:
			err = -EBUSY;
			goto fail;

		case VHD_BM_BAT_CLEAR:
			flags      = (VHD_FLAG_REQ_UPDATE_BAT |
				      VHD_FLAG_REQ_UPDATE_BITMAP);
			clone.secs = MIN(clone.secs, s->spb - (clone.sec % s->spb));
			err        = schedule_data_write(s, clone, flags);
			if (err)
				goto fail;
			break;

		case VHD_BM_BIT_CLEAR:
			flags      = VHD_FLAG_REQ_UPDATE_BITMAP;
			clone.secs = read_bitmap_cache_span(s, clone.sec, clone.secs, 0);
			err        = schedule_data_write(s, clone, flags);
			if (err)
				goto fail;
			break;

		case VHD_BM_BIT_SET:
			clone.secs = read_bitmap_cache_span(s, clone.sec, clone.secs, 1);
			err = schedule_data_write(s, clone, 0);
			if (err)
				goto fail;
			break;

		case VHD_BM_NOT_CACHED:
			clone.secs = MIN(clone.secs, s->spb - (clone.sec % s->spb));
			err = schedule_bitmap_read(s, clone.sec / s->spb);
			if (err)
				goto fail;

			err = __vhd_queue_request(s, VHD_OP_DATA_WRITE, clone);
			if (err)
				goto fail;
			break;

		case VHD_BM_READ_PENDING:
			clone.secs = MIN(clone.secs, s->spb - (clone.sec % s->spb));
			err = __vhd_queue_request(s, VHD_OP_DATA_WRITE, clone);
			if (err)
				goto fail;
			break;

		default:
			ASSERT(0);
			break;
		}

		treq.sec  += clone.secs;
		treq.secs -= clone.secs;
		treq.buf  += vhd_sectors_to_bytes(clone.secs);
		continue;

	fail:
		clone.secs = treq.secs;
		td_complete_request(clone, err);
		break;
	}
}

static inline void
signal_completion(struct vhd_request *list, int error)
{
	struct vhd_state *s;
	struct vhd_request *r, *next;

	if (!list)
		return;

	r = list;
	s = list->state;

	while (r) {
		int err;

		err  = (error ? error : r->error);
		next = r->next;
		td_complete_request(r->treq, err);
		DBG(TLOG_DBG, "lsec: 0x%08"PRIx64", blk: 0x%04"PRIx64", "
		    "err: %d\n", r->treq.sec, r->treq.sec / s->spb, err);
		free_vhd_request(s, r);
		r    = next;

		s->returned++;
		TRACE(s);
	}
}

static void
start_new_bitmap_transaction(struct vhd_state *s, struct vhd_bitmap *bm)
{
	struct vhd_transaction *tx;
	struct vhd_request *r, *next;
	int i;

	if (!bm->queue.head)
		return;

	DBG(TLOG_DBG, "blk: 0x%04x\n", bm->blk);

	r  = bm->queue.head;
	tx = &bm->tx;
	clear_req_list(&bm->queue);

	if (r && bat_entry(s, bm->blk) == DD_BLK_UNUSED)
		tx->error = -EIO;

	while (r) {
		next    = r->next;
		r->next = NULL;
		clear_vhd_flag(r->flags, VHD_FLAG_REQ_QUEUED);

		add_to_transaction(tx, r);
		if (test_vhd_flag(r->flags, VHD_FLAG_REQ_FINISHED)) {
			tx->finished++;
			if (!r->error) {
				uint32_t sec = r->treq.sec % s->spb;
				for (i = 0; i < r->treq.secs; i++)
					vhd_bitmap_set(&s->vhd,
						       bm->shadow, sec + i);
			}
		}
		r = next;
	}

	/* perhaps all the queued writes already completed? */
	if (tx->started && transaction_completed(tx))
		finish_data_transaction(s, bm);
}

static void
finish_bat_transaction(struct vhd_state *s, struct vhd_bitmap *bm)
{
	struct vhd_transaction *tx = &bm->tx;

	if (!bat_locked(s))
		return;

	if (s->bat.pbw_blk != bm->blk)
		return;

	if (!s->bat.req.error)
		goto release;

	if (!test_vhd_flag(tx->status, VHD_FLAG_TX_LIVE))
		goto release;

	tx->closed = 1;
	return;

 release:
	DBG(TLOG_DBG, "blk: 0x%04x\n", bm->blk);
	unlock_bat(s);
	init_bat(s);
}

static void
finish_bitmap_transaction(struct vhd_state *s,
			  struct vhd_bitmap *bm, int error)
{
	int map_size;
	struct vhd_transaction *tx = &bm->tx;

	DBG(TLOG_DBG, "blk: 0x%04x, err: %d\n", bm->blk, error);
	tx->error = (tx->error ? tx->error : error);
	map_size  = vhd_sectors_to_bytes(s->bm_secs);

	if (!test_vhd_flag(s->flags, VHD_FLAG_OPEN_PREALLOCATE)) {
		if (test_vhd_flag(tx->status, VHD_FLAG_TX_UPDATE_BAT)) {
			/* still waiting for bat write */
			ASSERT(bm->blk == s->bat.pbw_blk);
			ASSERT(test_vhd_flag(s->bat.status, 
					     VHD_FLAG_BAT_WRITE_STARTED));
			s->bat.req.tx = tx;
			return;
		}
	}

	if (tx->error) {
		/* undo changes to shadow */
		memcpy(bm->shadow, bm->map, map_size);
	} else {
		/* complete atomic write */
		memcpy(bm->map, bm->shadow, map_size);
		if (!test_batmap(s, bm->blk) && bitmap_full(s, bm))
			set_batmap(s, bm->blk);
	}

	/* transaction done; signal completions */
	signal_completion(tx->requests.head, tx->error);
	init_tx(tx);
	start_new_bitmap_transaction(s, bm);

	if (!bitmap_in_use(bm))
		unlock_bitmap(bm);

	finish_bat_transaction(s, bm);
}

static void
finish_data_transaction(struct vhd_state *s, struct vhd_bitmap *bm)
{
	struct vhd_transaction *tx = &bm->tx;

	DBG(TLOG_DBG, "blk: 0x%04x\n", bm->blk);

	tx->closed = 1;

	if (!tx->error)
		return schedule_bitmap_write(s, bm->blk);

	return finish_bitmap_transaction(s, bm, 0);
}

static void
finish_bat_write(struct vhd_request *req)
{
	struct vhd_bitmap *bm;
	struct vhd_transaction *tx;
	struct vhd_state *s = req->state;

	s->returned++;
	TRACE(s);

	bm = get_bitmap(s, s->bat.pbw_blk);

	DBG(TLOG_DBG, "blk 0x%04x, pbwo: 0x%08"PRIx64", err %d\n",
	    s->bat.pbw_blk, s->bat.pbw_offset, req->error);
	ASSERT(bm && bitmap_valid(bm));
	ASSERT(bat_locked(s) &&
	       test_vhd_flag(s->bat.status, VHD_FLAG_BAT_WRITE_STARTED));

	tx = &bm->tx;
	ASSERT(test_vhd_flag(tx->status, VHD_FLAG_TX_LIVE));

	if (!req->error) {
		bat_entry(s, s->bat.pbw_blk) = s->bat.pbw_offset;
		s->next_db = s->bat.pbw_offset + s->spb + s->bm_secs;
	} else
		tx->error = req->error;

	if (test_vhd_flag(s->flags, VHD_FLAG_OPEN_PREALLOCATE)) {
		tx->finished++;
		remove_from_req_list(&tx->requests, req);
		if (transaction_completed(tx))
			finish_data_transaction(s, bm);
	} else {
		clear_vhd_flag(tx->status, VHD_FLAG_TX_UPDATE_BAT);
		if (s->bat.req.tx)
			finish_bitmap_transaction(s, bm, req->error);
	}

	finish_bat_transaction(s, bm);
}

static void
finish_zero_bm_write(struct vhd_request *req)
{
	uint32_t blk;
	struct vhd_bitmap *bm;
	struct vhd_transaction *tx = req->tx;
	struct vhd_state *s = req->state;

	s->returned++;
	TRACE(s);

	blk = req->treq.sec / s->spb;
	bm  = get_bitmap(s, blk);

	DBG(TLOG_DBG, "blk: 0x%04x\n", blk);
	ASSERT(bat_locked(s));
	ASSERT(s->bat.pbw_blk == blk);
	ASSERT(bm && bitmap_valid(bm) && bitmap_locked(bm));

	tx->finished++;
	remove_from_req_list(&tx->requests, req);

	if (req->error) {
		unlock_bat(s);
		init_bat(s);
		tx->error = req->error;
		clear_vhd_flag(tx->status, VHD_FLAG_TX_UPDATE_BAT);
	} else
		schedule_bat_write(s);

	if (transaction_completed(tx))
		finish_data_transaction(s, bm);
}

static int
finish_redundant_bm_write(struct vhd_request *req)
{
	/* uint32_t blk; */
	struct vhd_state *s = (struct vhd_state *) req->state;

	s->returned++;
	TRACE(s);	
	/* blk = req->treq.sec / s->spb;
	   DBG(TLOG_DBG, "blk: %u\n", blk); */

	if (req->error) {
		ERR(s, req->error, "lsec: 0x%08"PRIx64, req->treq.sec);
	}
	free_vhd_request(s, req);
	s->debug_done_redundant_writes++;
	return 0;
}


static void
finish_bitmap_read(struct vhd_request *req)
{
	uint32_t blk;
	struct vhd_bitmap  *bm;
	struct vhd_request *r, *next;
	struct vhd_state   *s = req->state;

	s->returned++;
	TRACE(s);

	blk = req->treq.sec / s->spb;
	bm  = get_bitmap(s, blk);

	DBG(TLOG_DBG, "blk: 0x%04x\n", blk);
	ASSERT(bm && test_vhd_flag(bm->status, VHD_FLAG_BM_READ_PENDING));

	r = bm->waiting.head;
	clear_req_list(&bm->waiting);
	clear_vhd_flag(bm->status, VHD_FLAG_BM_READ_PENDING);

	if (!req->error) {
		memcpy(bm->shadow, bm->map, vhd_sectors_to_bytes(s->bm_secs));

		while (r) {
			struct vhd_request tmp;

			tmp  = *r;
			next =  r->next;
			free_vhd_request(s, r);

			ASSERT(tmp.op == VHD_OP_DATA_READ || 
			       tmp.op == VHD_OP_DATA_WRITE);

			if (tmp.op == VHD_OP_DATA_READ)
				vhd_queue_read(s->driver, tmp.treq);
			else if (tmp.op == VHD_OP_DATA_WRITE)
				vhd_queue_write(s->driver, tmp.treq);

			r = next;
		}
	} else {
		int err = req->error;
		unlock_bitmap(bm);
		free_vhd_bitmap(s, bm);
		return signal_completion(r, err);
	}

	if (!bitmap_in_use(bm))
		unlock_bitmap(bm);
}

static void
finish_bitmap_write(struct vhd_request *req)
{
	uint32_t blk;
	struct vhd_bitmap  *bm;
	struct vhd_transaction *tx;
	struct vhd_state *s = req->state;

	s->returned++;
	TRACE(s);

	blk = req->treq.sec / s->spb;
	bm  = get_bitmap(s, blk);
	tx  = &bm->tx;

	DBG(TLOG_DBG, "blk: 0x%04x, started: %d, finished: %d\n",
	    blk, tx->started, tx->finished);
	ASSERT(tx->closed);
	ASSERT(bm && bitmap_valid(bm));
	ASSERT(test_vhd_flag(bm->status, VHD_FLAG_BM_WRITE_PENDING));

	clear_vhd_flag(bm->status, VHD_FLAG_BM_WRITE_PENDING);

	finish_bitmap_transaction(s, bm, req->error);
}

static void
finish_data_read(struct vhd_request *req)
{
	struct vhd_state *s = req->state;

	DBG(TLOG_DBG, "lsec 0x%08"PRIx64", blk: 0x%04"PRIx64"\n", 
	    req->treq.sec, req->treq.sec / s->spb);
	signal_completion(req, 0);
}

static void
finish_data_write(struct vhd_request *req)
{
	int i;
	struct vhd_transaction *tx = req->tx;
	struct vhd_state *s = (struct vhd_state *)req->state;

	set_vhd_flag(req->flags, VHD_FLAG_REQ_FINISHED);

	if (tx) {
		uint32_t blk, sec;
		struct vhd_bitmap *bm;

		blk = req->treq.sec / s->spb;
		sec = req->treq.sec % s->spb;
		bm  = get_bitmap(s, blk);

		ASSERT(bm && bitmap_valid(bm) && bitmap_locked(bm));

		tx->finished++;

		DBG(TLOG_DBG, "lsec: 0x%08"PRIx64", blk: 0x04%"PRIx64", "
		    "tx->started: %d, tx->finished: %d\n", req->treq.sec,
		    req->treq.sec / s->spb, tx->started, tx->finished);

		if (!req->error)
			for (i = 0; i < req->treq.secs; i++)
				vhd_bitmap_set(&s->vhd, bm->shadow,  sec + i);

		if (transaction_completed(tx))
			finish_data_transaction(s, bm);

	} else if (!test_vhd_flag(req->flags, VHD_FLAG_REQ_QUEUED)) {
		ASSERT(!req->next);
		DBG(TLOG_DBG, "lsec: 0x%08"PRIx64", blk: 0x%04"PRIx64"\n", 
		    req->treq.sec, req->treq.sec / s->spb);
		signal_completion(req, 0);
	}
}

void
vhd_complete(void *arg, struct tiocb *tiocb, int err)
{
	struct vhd_request *req = (struct vhd_request *)arg;
	struct vhd_state *s = req->state;
	struct iocb *io = &tiocb->iocb;

	s->completed++;
	TRACE(s);

	req->error = err;

	if (req->error)
		ERR(s, req->error, "%s: op: %u, lsec: %"PRIu64", secs: %u, "
		    "nbytes: %lu, blk: %"PRIu64", blk_offset: %u",
		    s->vhd.file, req->op, req->treq.sec, req->treq.secs,
		    io->u.c.nbytes, req->treq.sec / s->spb,
		    bat_entry(s, req->treq.sec / s->spb));

	switch (req->op) {
	case VHD_OP_DATA_READ:
		finish_data_read(req);
		break;

	case VHD_OP_DATA_WRITE:
		finish_data_write(req);
		break;

	case VHD_OP_BITMAP_READ:
		finish_bitmap_read(req);
		break;

	case VHD_OP_BITMAP_WRITE:
		finish_bitmap_write(req);
		break;

	case VHD_OP_ZERO_BM_WRITE:
		finish_zero_bm_write(req);
		break;

	case VHD_OP_REDUNDANT_BM_WRITE:
		finish_redundant_bm_write(req);
		break;

	case VHD_OP_BAT_WRITE:
		finish_bat_write(req);
		break;

	default:
		ASSERT(0);
		break;
	}
}

void 
vhd_debug(td_driver_t *driver)
{
	int i;
	struct vhd_state *s = (struct vhd_state *)driver->data;

	DBG(TLOG_WARN, "%s: QUEUED: 0x%08"PRIx64", COMPLETED: 0x%08"PRIx64", "
	    "RETURNED: 0x%08"PRIx64"\n", s->vhd.file, s->queued, s->completed,
	    s->returned);
	DBG(TLOG_WARN, "WRITES: 0x%08"PRIx64", AVG_WRITE_SIZE: %f\n",
	    s->writes, (s->writes ? ((float)s->write_size / s->writes) : 0.0));
	DBG(TLOG_WARN, "READS: 0x%08"PRIx64", AVG_READ_SIZE: %f\n",
	    s->reads, (s->reads ? ((float)s->read_size / s->reads) : 0.0));

	DBG(TLOG_WARN, "ALLOCATED REQUESTS: (%u total)\n", VHD_REQS_DATA);
	for (i = 0; i < VHD_REQS_DATA; i++) {
		struct vhd_request *r = &s->vreq_list[i];
		td_request_t *t       = &r->treq;
		const char *vname     = t->vreq ? t->vreq->name: NULL;
		if (t->secs)
			DBG(TLOG_WARN, "%d: vreq: %s.%d, err: %d, op: %d,"
			    " lsec: 0x%08"PRIx64", flags: %d, this: %p, "
			    "next: %p, tx: %p\n", i, vname, t->sidx, r->error, r->op,
			    t->sec, r->flags, r, r->next, r->tx);
	}

	DBG(TLOG_WARN, "BITMAP CACHE:\n");
	for (i = 0; i < VHD_CACHE_SIZE; i++) {
		int qnum = 0, wnum = 0, rnum = 0;
		struct vhd_bitmap *bm = s->bitmap[i];
		struct vhd_transaction *tx;
		struct vhd_request *r;

		if (!bm)
			continue;

		tx = &bm->tx;
		r = bm->queue.head;
		while (r) {
			qnum++;
			r = r->next;
		}

		r = bm->waiting.head;
		while (r) {
			wnum++;
			r = r->next;
		}

		r = tx->requests.head;
		while (r) {
			rnum++;
			r = r->next;
		}

		DBG(TLOG_WARN, "%d: blk: 0x%04x, status: 0x%08x, q: %p, qnum: %d, w: %p, "
		    "wnum: %d, locked: %d, in use: %d, tx: %p, tx_error: %d, "
		    "started: %d, finished: %d, status: %u, reqs: %p, nreqs: %d\n",
		    i, bm->blk, bm->status, bm->queue.head, qnum, bm->waiting.head,
		    wnum, bitmap_locked(bm), bitmap_in_use(bm), tx, tx->error,
		    tx->started, tx->finished, tx->status, tx->requests.head, rnum);
	}

	DBG(TLOG_WARN, "BAT: status: 0x%08x, pbw_blk: 0x%04x, "
	    "pbw_off: 0x%08"PRIx64", tx: %p\n", s->bat.status, s->bat.pbw_blk,
	    s->bat.pbw_offset, s->bat.req.tx);

/*
	for (i = 0; i < s->hdr.max_bat_size; i++)
		DPRINTF("%d: %u\n", i, s->bat.bat[i]);
*/
}

struct tap_disk tapdisk_vhd = {
	.disk_type          = "tapdisk_vhd",
	.flags              = 0,
	.private_data_size  = sizeof(struct vhd_state),
	.td_open            = _vhd_open,
	.td_close           = _vhd_close,
	.td_queue_read      = vhd_queue_read,
	.td_queue_write     = vhd_queue_write,
	.td_get_parent_id   = vhd_get_parent_id,
	.td_validate_parent = vhd_validate_parent,
	.td_debug           = vhd_debug,
};

[-- Attachment #4: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
@ 2015-07-03  8:45 Akash Talole
  0 siblings, 0 replies; 278+ messages in thread
From: Akash Talole @ 2015-07-03  8:45 UTC (permalink / raw)
  To: xen-devel


[-- Attachment #1.1: Type: text/plain, Size: 580 bytes --]

Hello,
      I want to know about Blktap asynchronous i/o read write operations on
VHD. I want to know detail flow of program  block-VHD.c . How the read
write operations are performed on VHD . And any improvement in code would
be done for better read   write operations. Description about dynamic disk
structure. I wand modify code of fast clone copy for copy on read.
Currently data is copy into vhd  after write.
So tell me about how step by step which functions are calling from
block-vhd so fast copy is done.

I have attached the code of block-vhd.c.


Thanks,
Akash Talole

[-- Attachment #1.2: Type: text/html, Size: 1371 bytes --]

[-- Attachment #2: block-vhd.c --]
[-- Type: text/x-csrc, Size: 58428 bytes --]

/* 
 * Copyright (C) Citrix Systems Inc.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; version 2.1 only
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */

/*
 * block-vhd.c: asynchronous vhd implementation.
 *
 * A note on write transactions:
 * Writes that require updating the BAT or bitmaps cannot be signaled
 * as complete until all updates have reached disk.  Transactions are
 * used to ensure proper ordering in these cases.  The two types of
 * transactions are as follows:
 *   - Bitmap updates only: data writes that require updates to the same
 *     bitmap are grouped in a transaction.  Only after all data writes
 *     in a transaction complete does the bitmap write commence.  Only
 *     after the bitmap write finishes are the data writes signalled as
 *     complete.
 *   - BAT and bitmap updates: data writes are grouped in transactions
 *     as above, but a special extra write is included in the transaction,
 *     which zeros out the newly allocated bitmap on disk.  When the data
 *     writes and the zero-bitmap write complete, the BAT and bitmap writes
 *     are started in parallel.  The transaction is completed only after both
 *     the BAT and bitmap writes successfully return.
 */

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <uuid/uuid.h> /* For whatever reason, Linux packages this in */
                       /* e2fsprogs-devel.                            */
#include <string.h>    /* for memset.                                 */
#include <libaio.h>
#include <sys/mman.h>
#include <limits.h>

#include "debug.h"
#include "libvhd.h"
#include "tapdisk.h"
#include "tapdisk-driver.h"
#include "tapdisk-interface.h"
#include "tapdisk-disktype.h"
#include "tapdisk-storage.h"

unsigned int SPB;

#define DEBUGGING   2
#define MICROSOFT_COMPAT

#define VHD_BATMAP_MAX_RETRIES 10

#define __TRACE(s)							\
	do {								\
		DBG(TLOG_DBG, "%s: QUEUED: %" PRIu64 ", COMPLETED: %"	\
		    PRIu64", RETURNED: %" PRIu64 ", DATA_ALLOCATED: "	\
		    "%u, BBLK: 0x%04x\n",				\
		    s->vhd.file, s->queued, s->completed, s->returned,	\
		    VHD_REQS_DATA - s->vreq_free_count,			\
		    s->bat.pbw_blk);					\
	} while(0)

#if (DEBUGGING == 1)
  #define DBG(level, _f, _a...)      DPRINTF(_f, ##_a)
  #define ERR(_s, err, _f, _a...)    DPRINTF("ERROR: %d: " _f, err, ##_a)
  #define TRACE(s)                   ((void)0)
#elif (DEBUGGING == 2)
  #define DBG(level, _f, _a...)      tlog_write(level, _f, ##_a)
  #define ERR(_s, _err, _f, _a...)   tlog_drv_error((_s)->driver, _err, _f, ##_a)
  #define TRACE(s)                   __TRACE(s)
#else
  #define DBG(level, _f, _a...)      ((void)0)
  #define ERR(_s, err, _f, _a...)    ((void)0)
  #define TRACE(s)                   ((void)0)
#endif

/******VHD DEFINES******/
#define VHD_CACHE_SIZE               32

#define VHD_REQS_DATA                TAPDISK_DATA_REQUESTS
#define VHD_REQS_META                (VHD_CACHE_SIZE + 2)
#define VHD_REQS_TOTAL               (VHD_REQS_DATA + VHD_REQS_META)

#define VHD_OP_BAT_WRITE             0
#define VHD_OP_DATA_READ             1
#define VHD_OP_DATA_WRITE            2
#define VHD_OP_BITMAP_READ           3
#define VHD_OP_BITMAP_WRITE          4
#define VHD_OP_ZERO_BM_WRITE         5
#define VHD_OP_REDUNDANT_BM_WRITE    6

#define VHD_BM_BAT_LOCKED            0
#define VHD_BM_BAT_CLEAR             1
#define VHD_BM_BIT_CLEAR             2
#define VHD_BM_BIT_SET               3
#define VHD_BM_NOT_CACHED            4
#define VHD_BM_READ_PENDING          5

#define VHD_FLAG_OPEN_RDONLY         1
#define VHD_FLAG_OPEN_NO_CACHE       2
#define VHD_FLAG_OPEN_QUIET          4
#define VHD_FLAG_OPEN_STRICT         8
#define VHD_FLAG_OPEN_QUERY          16
#define VHD_FLAG_OPEN_PREALLOCATE    32
#define VHD_FLAG_OPEN_NO_O_DIRECT    64
#define VHD_FLAG_OPEN_LOCAL_CACHE    128

#define VHD_FLAG_BAT_LOCKED          1
#define VHD_FLAG_BAT_WRITE_STARTED   2

#define VHD_FLAG_BM_UPDATE_BAT       1
#define VHD_FLAG_BM_WRITE_PENDING    2
#define VHD_FLAG_BM_READ_PENDING     4
#define VHD_FLAG_BM_LOCKED           8

#define VHD_FLAG_REQ_UPDATE_BAT      1
#define VHD_FLAG_REQ_UPDATE_BITMAP   2
#define VHD_FLAG_REQ_QUEUED          4
#define VHD_FLAG_REQ_FINISHED        8

#define VHD_FLAG_TX_LIVE             1
#define VHD_FLAG_TX_UPDATE_BAT       2

typedef uint8_t vhd_flag_t;

struct vhd_state;
struct vhd_request;

struct vhd_req_list {
	struct vhd_request       *head;
	struct vhd_request       *tail;
};

struct vhd_transaction {
	int                       error;
	int                       closed;
	int                       started;
	int                       finished;
	vhd_flag_t                status;
	struct vhd_req_list       requests;
};

struct vhd_request {
	int                       error;
	uint8_t                   op;
	vhd_flag_t                flags;
	td_request_t              treq;
	struct tiocb              tiocb;
	struct vhd_state         *state;
	struct vhd_request       *next;
	struct vhd_transaction   *tx;
};

struct vhd_bat_state {
	vhd_bat_t                 bat;
	vhd_batmap_t              batmap;
	vhd_flag_t                status;
	uint32_t                  pbw_blk;     /* blk num of pending write */
	uint64_t                  pbw_offset;  /* file offset of same */
	struct vhd_request        req;         /* for writing bat table */
	struct vhd_request        zero_req;    /* for initializing bitmaps */
	char                     *bat_buf;
};

struct vhd_bitmap {
	uint32_t                  blk;
	uint64_t                  seqno;       /* lru sequence number */
	vhd_flag_t                status;

	char                     *map;         /* map should only be modified
					        * in finish_bitmap_write */
	char                     *shadow;      /* in-memory bitmap changes are 
					        * made to shadow and copied to
					        * map only after having been
					        * flushed to disk */
	struct vhd_transaction    tx;          /* transaction data structure
						* encapsulating data, bitmap, 
						* and bat writes */
	struct vhd_req_list       queue;       /* data writes waiting for next
						* transaction */
	struct vhd_req_list       waiting;     /* pending requests that cannot
					        * be serviced until this bitmap
					        * is read from disk */
	struct vhd_request        req;
};

struct vhd_state {
	vhd_flag_t                flags;

        /* VHD stuff */
	vhd_context_t             vhd;
	uint32_t                  spp;         /* sectors per page */
	uint32_t                  spb;         /* sectors per block */
	uint64_t                  first_db;    /* pointer to datablock 0 */

	/**
	 * Pointer to the next (unallocated) datablock. If greater than UINT_MAX,
	 * there are no more blocks available.
	 */
	uint64_t                  next_db;

	struct vhd_bat_state      bat;

	uint64_t                  bm_lru;      /* lru sequence number */
	uint32_t                  bm_secs;     /* size of bitmap, in sectors */
	struct vhd_bitmap        *bitmap[VHD_CACHE_SIZE];

	int                       bm_free_count;
	struct vhd_bitmap        *bitmap_free[VHD_CACHE_SIZE];
	struct vhd_bitmap         bitmap_list[VHD_CACHE_SIZE];

	int                       vreq_free_count;
	struct vhd_request       *vreq_free[VHD_REQS_DATA];
	struct vhd_request        vreq_list[VHD_REQS_DATA];

	/* for redundant bitmap writes */
	int                       padbm_size;
	char                     *padbm_buf;
	long int                  debug_skipped_redundant_writes;
	long int                  debug_done_redundant_writes;

	td_driver_t              *driver;

	uint64_t                  queued;
	uint64_t                  completed;
	uint64_t                  returned;
	uint64_t                  reads;
	uint64_t                  read_size;
	uint64_t                  writes;
	uint64_t                  write_size;
};

#define test_vhd_flag(word, flag)  ((word) & (flag))
#define set_vhd_flag(word, flag)   ((word) |= (flag))
#define clear_vhd_flag(word, flag) ((word) &= ~(flag))

#define bat_entry(s, blk)          ((s)->bat.bat.bat[(blk)])

static void vhd_complete(void *, struct tiocb *, int);
static void finish_data_transaction(struct vhd_state *, struct vhd_bitmap *);

static struct vhd_state  *_vhd_master;
static unsigned long      _vhd_zsize;
static char              *_vhd_zeros = NULL;
int                       _dev_zero = -1;

static int
vhd_initialize(struct vhd_state *s)
{
	int err;

	if (_vhd_zeros)
		return 0;

	_vhd_zsize = 2 * getpagesize();
	if (test_vhd_flag(s->flags, VHD_FLAG_OPEN_PREALLOCATE))
		_vhd_zsize += VHD_BLOCK_SIZE;

	_dev_zero = open("/dev/zero", O_RDONLY);
	if (unlikely(_dev_zero == -1)) {
		err = errno;
		EPRINTF("failed to open /dev/zero: %s\n", strerror(err));
		return -err;
	}

	_vhd_zeros = mmap(NULL, _vhd_zsize, PROT_READ,
			  MAP_SHARED, _dev_zero, 0);
	if (_vhd_zeros == MAP_FAILED) {
		int _err;
		err = errno;
		EPRINTF("vhd_initialize failed: %s\n", strerror(err));
		_vhd_zeros = NULL;
		_vhd_zsize = 0;
		_err = close(_dev_zero);
		if (unlikely(_err == -1))
			EPRINTF("failed to close /dev/zero: %s (error ignored)\n",
					strerror(errno));
		else
			_dev_zero = -1;

		return -err;
	}

	_vhd_master = s;
	return 0;
}

static void
vhd_free(struct vhd_state *s)
{
	if (_vhd_master != s || !_vhd_zeros)
		return;

	free(s->padbm_buf);
	munmap(_vhd_zeros, _vhd_zsize);
	_vhd_zsize  = 0;
	_vhd_zeros  = NULL;
	_vhd_master = NULL;
	if (_dev_zero != -1) {
		int _err = close(_dev_zero);
		if (unlikely(_err == -1))
			EPRINTF("failed to close /dev/zero: %s (error ignored)\n",
					strerror(errno));
		else
			_dev_zero = -1;
	}
}

static char *
_get_vhd_zeros(const char *func, unsigned long size)
{
	if (!_vhd_zeros || _vhd_zsize < size) {
		EPRINTF("invalid zero request from %s: %lu, %lu, %p\n",
			func, size, _vhd_zsize, _vhd_zeros);
		ASSERT(0);
	}

	return _vhd_zeros;
}

#define vhd_zeros(size)	_get_vhd_zeros(__func__, size)

static inline void
set_batmap(struct vhd_state *s, uint32_t blk)
{
	if (s->bat.batmap.map) {
		vhd_batmap_set(&s->vhd, &s->bat.batmap, blk);
		DBG(TLOG_DBG, "block 0x%x completely full\n", blk);
	}
}

static inline int
test_batmap(struct vhd_state *s, uint32_t blk)
{
	if (!s->bat.batmap.map)
		return 0;
	return vhd_batmap_test(&s->vhd, &s->bat.batmap, blk);
}

static int
vhd_kill_footer(struct vhd_state *s)
{
	int err;
	off64_t end;
	void *zeros;

	if (s->vhd.footer.type == HD_TYPE_FIXED)
		return 0;

	err = posix_memalign(&zeros, 512, 512);
	if (err)
		return -err;

	err = 1;
	memset(zeros, 0xc7c7c7c7, 512);

	if ((end = lseek64(s->vhd.fd, 0, SEEK_END)) == -1)
		goto fail;

	if (lseek64(s->vhd.fd, (end - 512), SEEK_SET) == -1)
		goto fail;

	if (write(s->vhd.fd, zeros, 512) != 512)
		goto fail;

	err = 0;

 fail:
	free(zeros);
	if (err)
		return (errno ? -errno : -EIO);
	return 0;
}

static inline int
find_next_free_block(struct vhd_state *s)
{
	int err;
	off64_t eom;
	uint32_t i, entry;

	err = vhd_end_of_headers(&s->vhd, &eom);
	if (err)
		return err;

	s->next_db = secs_round_up(eom);
	s->first_db = s->next_db;
	if ((s->first_db + s->bm_secs) % s->spp)
		s->first_db += (s->spp - ((s->first_db + s->bm_secs) % s->spp));

	for (i = 0; i < s->bat.bat.entries; i++) {
		entry = bat_entry(s, i);
		if (entry != DD_BLK_UNUSED && entry >= s->next_db)
			s->next_db = (uint64_t)entry + (uint64_t)s->spb
				+ (uint64_t)s->bm_secs;
			if (s->next_db > UINT_MAX)
				break;
	}

	return 0;
}

static void
vhd_free_bat(struct vhd_state *s)
{
	free(s->bat.bat.bat);
	free(s->bat.batmap.map);
	free(s->bat.bat_buf);
	memset(&s->bat, 0, sizeof(struct vhd_bat));
}

static int
vhd_initialize_bat(struct vhd_state *s)
{
	int err, batmap_required, i;
	void *buf;

	memset(&s->bat, 0, sizeof(struct vhd_bat));

	err = vhd_read_bat(&s->vhd, &s->bat.bat);
	if (err) {
		EPRINTF("%s: reading bat: %d\n", s->vhd.file, err);
		return err;
	}

	batmap_required = 1;
	if (test_vhd_flag(s->flags, VHD_FLAG_OPEN_RDONLY)) {
		batmap_required = 0;
	} else {
		err = find_next_free_block(s);
		if (err)
			goto fail;
	}

	if (vhd_has_batmap(&s->vhd)) {
		for (i = 0; i < VHD_BATMAP_MAX_RETRIES; i++) {
			err = vhd_read_batmap(&s->vhd, &s->bat.batmap);
			if (err) {
				EPRINTF("%s: reading batmap: %d\n",
						s->vhd.file, err);
				if (batmap_required)
					goto fail;
			} else {
				break;
			}
		}
		if (err)
			EPRINTF("%s: ignoring non-critical batmap error\n",
					s->vhd.file);
	}

	err = posix_memalign(&buf, VHD_SECTOR_SIZE, VHD_SECTOR_SIZE);
	if (err)
		goto fail;

	s->bat.bat_buf = buf;

	return 0;

fail:
	vhd_free_bat(s);
	return err;
}

static void
vhd_free_bitmap_cache(struct vhd_state *s)
{
	int i;
	struct vhd_bitmap *bm;

	for (i = 0; i < VHD_CACHE_SIZE; i++) {
		bm = s->bitmap_list + i;
		free(bm->map);
		free(bm->shadow);
		s->bitmap_free[i] = NULL;
	}

	memset(s->bitmap_list, 0, sizeof(struct vhd_bitmap) * VHD_CACHE_SIZE);
}

static int
vhd_initialize_bitmap_cache(struct vhd_state *s)
{
	int i, err, map_size;
	struct vhd_bitmap *bm;
	void *map, *shadow;

	memset(s->bitmap_list, 0, sizeof(struct vhd_bitmap) * VHD_CACHE_SIZE);

	s->bm_lru        = 0;
	map_size         = vhd_sectors_to_bytes(s->bm_secs);
	s->bm_free_count = VHD_CACHE_SIZE;

	for (i = 0; i < VHD_CACHE_SIZE; i++) {
		bm = s->bitmap_list + i;

		err = posix_memalign(&map, 512, map_size);
		if (err)
			goto fail;

		bm->map = map;

		err = posix_memalign(&shadow, 512, map_size);
		if (err)
			goto fail;

		bm->shadow = shadow;

		memset(bm->map, 0, map_size);
		memset(bm->shadow, 0, map_size);
		s->bitmap_free[i] = bm;
	}

	return 0;

fail:
	vhd_free_bitmap_cache(s);
	return err;
}

static int
vhd_initialize_dynamic_disk(struct vhd_state *s)
{
	uint32_t bm_size;
	void *buf;
	int err;

	err = vhd_get_header(&s->vhd);
	if (err) {
		if (!test_vhd_flag(s->flags, VHD_FLAG_OPEN_QUIET))
			EPRINTF("Error reading VHD DD header.\n");
		return err;
	}

	if (s->vhd.header.hdr_ver != 0x00010000) {
		EPRINTF("unsupported header version! (0x%x)\n",
			s->vhd.header.hdr_ver);
		return -EINVAL;
	}

	s->spp     = getpagesize() >> VHD_SECTOR_SHIFT;
	s->spb     = s->vhd.header.block_size >> VHD_SECTOR_SHIFT;
	s->bm_secs = secs_round_up_no_zero(s->spb >> 3);

	s->padbm_size = (s->bm_secs / getpagesize()) * getpagesize();
	if (s->bm_secs % getpagesize())
		s->padbm_size += getpagesize();

	err = posix_memalign(&buf, 512, s->padbm_size);
	if (err)
		return -err;

	s->padbm_buf = buf;
	bm_size = s->bm_secs << VHD_SECTOR_SHIFT;
	memset(s->padbm_buf, 0, s->padbm_size - bm_size);
	memset(s->padbm_buf + (s->padbm_size - bm_size), ~0, bm_size);
	s->debug_skipped_redundant_writes = 0;
	s->debug_done_redundant_writes = 0;

	if (test_vhd_flag(s->flags, VHD_FLAG_OPEN_NO_CACHE))
		return 0;

	err = vhd_initialize_bat(s);
	if (err)
		return err;

	err = vhd_initialize_bitmap_cache(s);
	if (err) {
		vhd_free_bat(s);
		return err;
	}

	return 0;
}

static int
vhd_check_version(struct vhd_state *s)
{
	if (strncmp(s->vhd.footer.crtr_app, "tap", 3))
		return 0;

	if (s->vhd.footer.crtr_ver > VHD_CURRENT_VERSION) {
		if (!test_vhd_flag(s->flags, VHD_FLAG_OPEN_QUIET))
			EPRINTF("WARNING: %s vhd creator version 0x%08x, "
				"but only versions up to 0x%08x are "
				"supported for IO\n", s->vhd.file,
				s->vhd.footer.crtr_ver, VHD_CURRENT_VERSION);

		return -EINVAL;
	}

	return 0;
}

static void
vhd_log_open(struct vhd_state *s)
{
	char buf[5];
	uint32_t i, allocated, full;

	if (test_vhd_flag(s->flags, VHD_FLAG_OPEN_QUIET))
		return;

	snprintf(buf, sizeof(buf), "%s", s->vhd.footer.crtr_app);
	if (!vhd_type_dynamic(&s->vhd)) {
		DPRINTF("%s version: %s 0x%08x\n",
			s->vhd.file, buf, s->vhd.footer.crtr_ver);
		return;
	}

	allocated = 0;
	full      = 0;

	for (i = 0; i < s->bat.bat.entries; i++) {
		if (bat_entry(s, i) != DD_BLK_UNUSED)
			allocated++;
		if (test_batmap(s, i))
			full++;
	}

	DPRINTF("%s version: %s 0x%08x, b: %u, a: %u, f: %u, n: %"PRIu64"\n",
		s->vhd.file, buf, s->vhd.footer.crtr_ver, s->bat.bat.entries,
		allocated, full, s->next_db);
}

static int
__vhd_open(td_driver_t *driver, const char *name, vhd_flag_t flags)
{
        int i, o_flags, err;
	struct vhd_state *s;

        DBG(TLOG_INFO, "vhd_open: %s\n", name);
	if (test_vhd_flag(flags, VHD_FLAG_OPEN_STRICT))
		libvhd_set_log_level(1);

	s = (struct vhd_state *)driver->data;
	memset(s, 0, sizeof(struct vhd_state));

	s->flags  = flags;
	s->driver = driver;

	err = vhd_initialize(s);
	if (err)
		return err;

	o_flags = ((test_vhd_flag(flags, VHD_FLAG_OPEN_RDONLY)) ? 
		   VHD_OPEN_RDONLY : VHD_OPEN_RDWR);
	if ((test_vhd_flag(flags, VHD_FLAG_OPEN_RDONLY) ||
                test_vhd_flag(flags, VHD_FLAG_OPEN_LOCAL_CACHE)) &&
	    test_vhd_flag(flags, VHD_FLAG_OPEN_NO_O_DIRECT))
		set_vhd_flag(o_flags, VHD_OPEN_CACHED);

	if (test_vhd_flag(flags, VHD_FLAG_OPEN_STRICT))
		set_vhd_flag(o_flags, VHD_OPEN_STRICT);

	err = vhd_open(&s->vhd, name, o_flags);
	if (err) {
		libvhd_set_log_level(1);
		err = vhd_open(&s->vhd, name, o_flags);
		if (err) {
			EPRINTF("Unable to open [%s] (%d)!\n", name, err);
			return err;
		}
	}

	err = vhd_check_version(s);
	if (err)
		goto fail;

	s->spb = s->spp = 1;

	if (vhd_type_dynamic(&s->vhd)) {
		err = vhd_initialize_dynamic_disk(s);
		if (err)
			goto fail;
	}

	vhd_log_open(s);

	SPB = s->spb;

	s->vreq_free_count = VHD_REQS_DATA;
	for (i = 0; i < VHD_REQS_DATA; i++)
		s->vreq_free[i] = s->vreq_list + i;

	driver->info.size        = s->vhd.footer.curr_size >> VHD_SECTOR_SHIFT;
	driver->info.sector_size = VHD_SECTOR_SIZE;
	driver->info.info        = 0;

        DBG(TLOG_INFO, "vhd_open: done (sz:%"PRIu64", sct:%lu, inf:%u)\n",
	    driver->info.size, driver->info.sector_size, driver->info.info);

	if (test_vhd_flag(flags, VHD_FLAG_OPEN_STRICT) && 
	    !test_vhd_flag(flags, VHD_FLAG_OPEN_RDONLY)) {
		err = vhd_kill_footer(s);
		if (err) {
			DPRINTF("ERROR killing footer: %d\n", err);
			goto fail;
		}
		s->writes++;
	}

        return 0;

 fail:
	vhd_free_bat(s);
	vhd_free_bitmap_cache(s);
	vhd_close(&s->vhd);
	vhd_free(s);
	return err;
}

static int
_vhd_open(td_driver_t *driver, const char *name, td_flag_t flags)
{
	vhd_flag_t vhd_flags = 0;

	if (flags & TD_OPEN_RDONLY)
		vhd_flags |= VHD_FLAG_OPEN_RDONLY;
	if (flags & TD_OPEN_NO_O_DIRECT)
		vhd_flags |= VHD_FLAG_OPEN_NO_O_DIRECT;
	if (flags & TD_OPEN_QUIET)
		vhd_flags |= VHD_FLAG_OPEN_QUIET;
	if (flags & TD_OPEN_STRICT)
		vhd_flags |= VHD_FLAG_OPEN_STRICT;
	if (flags & TD_OPEN_QUERY)
		vhd_flags |= (VHD_FLAG_OPEN_QUERY  |
			      VHD_FLAG_OPEN_QUIET  |
			      VHD_FLAG_OPEN_RDONLY |
			      VHD_FLAG_OPEN_NO_CACHE);
    if (flags & TD_OPEN_LOCAL_CACHE)
        vhd_flags |= VHD_FLAG_OPEN_LOCAL_CACHE;

	/* pre-allocate for all but NFS and LVM storage */
	driver->storage = tapdisk_storage_type(name);

	if (driver->storage != TAPDISK_STORAGE_TYPE_NFS &&
	    driver->storage != TAPDISK_STORAGE_TYPE_LVM)
		vhd_flags |= VHD_FLAG_OPEN_PREALLOCATE;

	return __vhd_open(driver, name, vhd_flags);
}

static void
vhd_log_close(struct vhd_state *s)
{
	uint32_t i, allocated, full;

	if (test_vhd_flag(s->flags, VHD_FLAG_OPEN_QUIET))
		return;

	allocated = 0;
	full      = 0;

	for (i = 0; i < s->bat.bat.entries; i++) {
		if (bat_entry(s, i) != DD_BLK_UNUSED)
			allocated++;
		if (test_batmap(s, i))
			full++;
	}

	DPRINTF("%s: b: %u, a: %u, f: %u, n: %"PRIu64"\n",
		s->vhd.file, s->bat.bat.entries, allocated, full, s->next_db);
}

static int
_vhd_close(td_driver_t *driver)
{
	int err;
	struct vhd_state *s;
	
	DBG(TLOG_WARN, "vhd_close\n");
	s = (struct vhd_state *)driver->data;

	DPRINTF("gaps written/skipped: %ld/%ld\n", 
			s->debug_done_redundant_writes,
			s->debug_skipped_redundant_writes);

	/* don't write footer if tapdisk is read-only */
	if (test_vhd_flag(s->flags, VHD_FLAG_OPEN_RDONLY))
		goto free;
	
	/* 
	 * write footer if:
	 *   - we killed it on open (opened with strict) 
	 *   - we've written data since opening
	 */
	if (test_vhd_flag(s->flags, VHD_FLAG_OPEN_STRICT) || s->writes) {
		memcpy(&s->vhd.bat, &s->bat.bat, sizeof(vhd_bat_t));
		err = vhd_write_footer(&s->vhd, &s->vhd.footer);
		memset(&s->vhd.bat, 0, sizeof(vhd_bat_t));

		if (err)
			EPRINTF("writing %s footer: %d\n", s->vhd.file, err);

		if (!vhd_has_batmap(&s->vhd))
			goto free;

		err = vhd_write_batmap(&s->vhd, &s->bat.batmap);
		if (err)
			EPRINTF("writing %s batmap: %d\n", s->vhd.file, err);
	}

 free:
	vhd_log_close(s);
	vhd_free_bat(s);
	vhd_free_bitmap_cache(s);
	vhd_close(&s->vhd);
	vhd_free(s);

	memset(s, 0, sizeof(struct vhd_state));

	return 0;
}

int
vhd_validate_parent(td_driver_t *child_driver,
		    td_driver_t *parent_driver, td_flag_t flags)
{
	struct vhd_state *child  = (struct vhd_state *)child_driver->data;
	struct vhd_state *parent;

	if (parent_driver->type != DISK_TYPE_VHD) {
		if (child_driver->type != DISK_TYPE_VHD)
			return -EINVAL;
		if (child->vhd.footer.type != HD_TYPE_DIFF)
			return -EINVAL;
		if (!vhd_parent_raw(&child->vhd))
			return -EINVAL;
		return 0;
	}

	parent = (struct vhd_state *)parent_driver->data;

	/* 
	 * This check removed because of cases like:
	 *   - parent VHD marked as 'hidden'
	 *   - parent VHD modified during coalesce
	 */
	/*
	if (stat(parent->vhd.file, &stats)) {
		DPRINTF("ERROR stating parent file %s\n", parent->vhd.file);
		return -errno;
	}

	if (child->hdr.prt_ts != vhd_time(stats.st_mtime)) {
		DPRINTF("ERROR: parent file has been modified since "
			"snapshot.  Child image no longer valid.\n");
		return -EINVAL;
	}
	*/

	if (uuid_compare(child->vhd.header.prt_uuid, parent->vhd.footer.uuid)) {
		DPRINTF("ERROR: %s: %s, %s: parent uuid has changed since "
			"snapshot.  Child image no longer valid.\n",
			__func__, child->vhd.file, parent->vhd.file);
		return -EINVAL;
	}

	/* TODO: compare sizes */
	
	return 0;
}

int
vhd_get_parent_id(td_driver_t *driver, td_disk_id_t *id)
{
	int err;
	char *parent;
	struct vhd_state *s;
	int flags;

	DBG(TLOG_DBG, "\n");
	flags = id->flags;
	memset(id, 0, sizeof(td_disk_id_t));

	s = (struct vhd_state *)driver->data;

	if (s->vhd.footer.type != HD_TYPE_DIFF)
		return TD_NO_PARENT;

	err = vhd_parent_locator_get(&s->vhd, &parent);
	if (err)
		return err;

	id->name   = parent;
	id->type   = vhd_parent_raw(&s->vhd) ? DISK_TYPE_AIO : DISK_TYPE_VHD;
	id->flags  = flags|TD_OPEN_SHAREABLE|TD_OPEN_RDONLY;

	return 0;
}

static inline void
clear_req_list(struct vhd_req_list *list)
{
	list->head = list->tail = NULL;
}

static inline void
add_to_tail(struct vhd_req_list *list, struct vhd_request *e)
{
	if (!list->head) 
		list->head = list->tail = e;
	else 
		list->tail = list->tail->next = e;
}

static inline int
remove_from_req_list(struct vhd_req_list *list, struct vhd_request *e)
{
	struct vhd_request *i = list->head;

	if (list->head == e) {
		if (list->tail == e)
			clear_req_list(list);
		else
			list->head = list->head->next;
		return 0;
	}

	while (i->next) {
		if (i->next == e) {
			if (list->tail == e) {
				i->next = NULL;
				list->tail = i;
			} else
				i->next = i->next->next;
			return 0;
		}
		i = i->next;
	}

	return -EINVAL;
}

static inline void
init_vhd_request(struct vhd_state *s, struct vhd_request *req)
{
	memset(req, 0, sizeof(struct vhd_request));
	req->state = s;
}

static inline void
init_tx(struct vhd_transaction *tx)
{
	memset(tx, 0, sizeof(struct vhd_transaction));
}

static inline void
add_to_transaction(struct vhd_transaction *tx, struct vhd_request *r)
{
	ASSERT(!tx->closed);

	r->tx = tx;
	tx->started++;
	add_to_tail(&tx->requests, r);
	set_vhd_flag(tx->status, VHD_FLAG_TX_LIVE);

	DBG(TLOG_DBG, "blk: 0x%04"PRIx64", lsec: 0x%08"PRIx64", tx: %p, "
	    "started: %d, finished: %d, status: %u\n",
	    r->treq.sec / SPB, r->treq.sec, tx,
	    tx->started, tx->finished, tx->status);
}

static inline int
transaction_completed(struct vhd_transaction *tx)
{
	return (tx->started == tx->finished);
}

static inline void
init_bat(struct vhd_state *s)
{
	s->bat.req.tx     = NULL;
	s->bat.req.next   = NULL;
	s->bat.req.error  = 0;
	s->bat.pbw_blk    = 0;
	s->bat.pbw_offset = 0;
	s->bat.status     = 0;
}

static inline void
lock_bat(struct vhd_state *s)
{
	set_vhd_flag(s->bat.status, VHD_FLAG_BAT_LOCKED);
}

static inline void
unlock_bat(struct vhd_state *s)
{
	clear_vhd_flag(s->bat.status, VHD_FLAG_BAT_LOCKED);
}

static inline int
bat_locked(struct vhd_state *s)
{
	return test_vhd_flag(s->bat.status, VHD_FLAG_BAT_LOCKED);
}

static inline void
init_vhd_bitmap(struct vhd_state *s, struct vhd_bitmap *bm)
{
	bm->blk    = 0;
	bm->seqno  = 0;
	bm->status = 0;
	init_tx(&bm->tx);
	clear_req_list(&bm->queue);
	clear_req_list(&bm->waiting);
	memset(bm->map, 0, vhd_sectors_to_bytes(s->bm_secs));
	memset(bm->shadow, 0, vhd_sectors_to_bytes(s->bm_secs));
	init_vhd_request(s, &bm->req);
}

static inline struct vhd_bitmap *
get_bitmap(struct vhd_state *s, uint32_t block)
{
	int i;
	struct vhd_bitmap *bm;

	for (i = 0; i < VHD_CACHE_SIZE; i++) {
		bm = s->bitmap[i];
		if (bm && bm->blk == block)
			return bm;
	}

	return NULL;
}

static inline void
lock_bitmap(struct vhd_bitmap *bm)
{
	set_vhd_flag(bm->status, VHD_FLAG_BM_LOCKED);
}

static inline void
unlock_bitmap(struct vhd_bitmap *bm)
{
	clear_vhd_flag(bm->status, VHD_FLAG_BM_LOCKED);
}

static inline int
bitmap_locked(struct vhd_bitmap *bm)
{
	return test_vhd_flag(bm->status, VHD_FLAG_BM_LOCKED);
}

static inline int
bitmap_valid(struct vhd_bitmap *bm)
{
	return !test_vhd_flag(bm->status, VHD_FLAG_BM_READ_PENDING);
}

static inline int
bitmap_in_use(struct vhd_bitmap *bm)
{
	return (test_vhd_flag(bm->status, VHD_FLAG_BM_READ_PENDING)  ||
		test_vhd_flag(bm->status, VHD_FLAG_BM_WRITE_PENDING) ||
		test_vhd_flag(bm->tx.status, VHD_FLAG_TX_UPDATE_BAT) ||
		bm->waiting.head || bm->tx.requests.head || bm->queue.head);
}

static inline int
bitmap_full(struct vhd_state *s, struct vhd_bitmap *bm)
{
	int i, n;

	n = s->spb >> 3;
	for (i = 0; i < n; i++)
		if (bm->map[i] != (char)0xFF)
			return 0;

	DBG(TLOG_DBG, "bitmap 0x%04x full\n", bm->blk);
	return 1;
}

static struct vhd_bitmap *
remove_lru_bitmap(struct vhd_state *s)
{
	int i, idx = 0;
	uint64_t seq = s->bm_lru;
	struct vhd_bitmap *bm, *lru = NULL;

	for (i = 0; i < VHD_CACHE_SIZE; i++) {
		bm = s->bitmap[i];
		if (bm && bm->seqno < seq && !bitmap_locked(bm)) {
			idx = i;
			lru = bm;
			seq = lru->seqno;
		}
	}

	if (lru) {
		s->bitmap[idx] = NULL;
		ASSERT(!bitmap_in_use(lru));
	}

	return  lru;
}

static int
alloc_vhd_bitmap(struct vhd_state *s, struct vhd_bitmap **bitmap, uint32_t blk)
{
	struct vhd_bitmap *bm;
	
	*bitmap = NULL;

	if (s->bm_free_count > 0) {
		bm = s->bitmap_free[--s->bm_free_count];
	} else {
		bm = remove_lru_bitmap(s);
		if (!bm)
			return -EBUSY;
	}

	init_vhd_bitmap(s, bm);
	bm->blk = blk;
	*bitmap = bm;

	return 0;
}

static inline uint64_t
__bitmap_lru_seqno(struct vhd_state *s)
{
	int i;
	struct vhd_bitmap *bm;

	if (s->bm_lru == 0xffffffff) {
		s->bm_lru = 0;
		for (i = 0; i < VHD_CACHE_SIZE; i++) {
			bm = s->bitmap[i];
			if (bm) {
				bm->seqno >>= 1;
				if (bm->seqno > s->bm_lru)
					s->bm_lru = bm->seqno;
			}
		}
	}

	return ++s->bm_lru;
}

static inline void
touch_bitmap(struct vhd_state *s, struct vhd_bitmap *bm)
{
	bm->seqno = __bitmap_lru_seqno(s);
}

static inline void
install_bitmap(struct vhd_state *s, struct vhd_bitmap *bm)
{
	int i;
	for (i = 0; i < VHD_CACHE_SIZE; i++) {
		if (!s->bitmap[i]) {
			touch_bitmap(s, bm);
			s->bitmap[i] = bm;
			return;
		}
	}

	ASSERT(0);
}

static inline void
free_vhd_bitmap(struct vhd_state *s, struct vhd_bitmap *bm)
{
	int i;

	for (i = 0; i < VHD_CACHE_SIZE; i++)
		if (s->bitmap[i] == bm)
			break;

	ASSERT(!bitmap_locked(bm));
	ASSERT(!bitmap_in_use(bm));
	ASSERT(i < VHD_CACHE_SIZE);

	s->bitmap[i] = NULL;
	s->bitmap_free[s->bm_free_count++] = bm;
}

static int
read_bitmap_cache(struct vhd_state *s, uint64_t sector, uint8_t op)
{
	uint32_t blk, sec;
	struct vhd_bitmap *bm;

	/* in fixed disks, every block is present */
	if (s->vhd.footer.type == HD_TYPE_FIXED) 
		return VHD_BM_BIT_SET;

	/* the extent the logical sector falls in */
	blk = sector / s->spb;

	/* offset within the extent the logical sector is located */
	sec = sector % s->spb;

	if (blk > s->vhd.header.max_bat_size) {
		DPRINTF("ERROR: sec %"PRIu64" out of range, op = %d\n",
			sector, op);
		return -EINVAL;
	}

	if (bat_entry(s, blk) == DD_BLK_UNUSED) {
		if (op == VHD_OP_DATA_WRITE &&
		    s->bat.pbw_blk != blk && bat_locked(s))
			return VHD_BM_BAT_LOCKED;

		return VHD_BM_BAT_CLEAR;
	}

	if (test_batmap(s, blk)) {
		DBG(TLOG_DBG, "batmap set for 0x%04x\n", blk);
		return VHD_BM_BIT_SET;
	}

	bm = get_bitmap(s, blk);
	if (!bm)
		return VHD_BM_NOT_CACHED;

	/* bump lru count */
	touch_bitmap(s, bm);

	if (test_vhd_flag(bm->status, VHD_FLAG_BM_READ_PENDING))
		return VHD_BM_READ_PENDING;

	return ((vhd_bitmap_test(&s->vhd, bm->map, sec)) ? 
		VHD_BM_BIT_SET : VHD_BM_BIT_CLEAR);
}

static int
read_bitmap_cache_span(struct vhd_state *s, 
		       uint64_t sector, int nr_secs, int value)
{
	int ret;
	uint32_t blk, sec;
	struct vhd_bitmap *bm;

	/* in fixed disks, every block is present */
	if (s->vhd.footer.type == HD_TYPE_FIXED) 
		return nr_secs;

	sec = sector % s->spb;
	blk = sector / s->spb;

	if (test_batmap(s, blk))
		return MIN(nr_secs, s->spb - sec);

	bm  = get_bitmap(s, blk);
	
	ASSERT(bm && bitmap_valid(bm));

	for (ret = 0; sec < s->spb && ret < nr_secs; sec++, ret++)
		if (vhd_bitmap_test(&s->vhd, bm->map, sec) != value)
			break;

	return ret;
}

static inline struct vhd_request *
alloc_vhd_request(struct vhd_state *s)
{
	struct vhd_request *req = NULL;
	
	if (s->vreq_free_count > 0) {
		req = s->vreq_free[--s->vreq_free_count];
		ASSERT(req->treq.secs == 0);
		init_vhd_request(s, req);
		return req;
	}

	return NULL;
}

static inline void
free_vhd_request(struct vhd_state *s, struct vhd_request *req)
{
	memset(req, 0, sizeof(struct vhd_request));
	s->vreq_free[s->vreq_free_count++] = req;
}

static inline void
aio_read(struct vhd_state *s, struct vhd_request *req, uint64_t offset)
{
	struct tiocb *tiocb = &req->tiocb;

	td_prep_read(tiocb, s->vhd.fd, req->treq.buf,
		     vhd_sectors_to_bytes(req->treq.secs),
		     offset, vhd_complete, req);
	td_queue_tiocb(s->driver, tiocb);

	s->queued++;
	s->reads++;
	s->read_size += req->treq.secs;
	TRACE(s);
}

static inline void
aio_write(struct vhd_state *s, struct vhd_request *req, uint64_t offset)
{
	struct tiocb *tiocb = &req->tiocb;

	td_prep_write(tiocb, s->vhd.fd, req->treq.buf,
		      vhd_sectors_to_bytes(req->treq.secs),
		      offset, vhd_complete, req);
	td_queue_tiocb(s->driver, tiocb);

	s->queued++;
	s->writes++;
	s->write_size += req->treq.secs;
	TRACE(s);
}

/**
 * Reserves a new extent.
 *
 * @returns a 64-bit unsigned integer where the error code is stored in the
 * upper 32 bits and the reserved block number is stored in the lower 32 bits.
 * If an error is returned (the upper 32 bits are not zero), the lower 32 bits
 * are undefined.
 */
static inline uint64_t
reserve_new_block(struct vhd_state *s, uint32_t blk)
{
	int gap = 0;

	ASSERT(!test_vhd_flag(s->bat.status, VHD_FLAG_BAT_WRITE_STARTED));

	/* data region of segment should begin on page boundary */
	if ((s->next_db + s->bm_secs) % s->spp)
		gap = (s->spp - ((s->next_db + s->bm_secs) % s->spp));

	if (s->next_db + gap > UINT_MAX)
		return (uint64_t)ENOSPC << 32;

	s->bat.pbw_blk    = blk;
	s->bat.pbw_offset = s->next_db + gap;

	return s->next_db;
}

static int
schedule_bat_write(struct vhd_state *s)
{
	int i;
	uint32_t blk;
	char *buf;
	uint64_t offset;
	struct vhd_request *req;

	ASSERT(bat_locked(s));

	req = &s->bat.req;
	buf = s->bat.bat_buf;
	blk = s->bat.pbw_blk;

	init_vhd_request(s, req);
	memcpy(buf, &bat_entry(s, blk - (blk % 128)), 512);

	((uint32_t *)buf)[blk % 128] = s->bat.pbw_offset;

	for (i = 0; i < 128; i++)
		BE32_OUT(&((uint32_t *)buf)[i]);

	offset         = s->vhd.header.table_offset + (blk - (blk % 128)) * 4;
	req->treq.secs = 1;
	req->treq.buf  = buf;
	req->op        = VHD_OP_BAT_WRITE;
	req->next      = NULL;

	aio_write(s, req, offset);
	set_vhd_flag(s->bat.status, VHD_FLAG_BAT_WRITE_STARTED);

	DBG(TLOG_DBG, "blk: 0x%04x, pbwo: 0x%08"PRIx64", "
	    "table_offset: 0x%08"PRIx64"\n", blk, s->bat.pbw_offset, offset);

	return 0;
}

static void
schedule_zero_bm_write(struct vhd_state *s,
		       struct vhd_bitmap *bm, uint64_t lb_end)
{
	uint64_t offset;
	struct vhd_request *req = &s->bat.zero_req;

	init_vhd_request(s, req);

	offset         = vhd_sectors_to_bytes(lb_end);
	req->op        = VHD_OP_ZERO_BM_WRITE;
	req->treq.sec  = s->bat.pbw_blk * s->spb;
	req->treq.secs = (s->bat.pbw_offset - lb_end) + s->bm_secs;
	req->treq.buf  = vhd_zeros(vhd_sectors_to_bytes(req->treq.secs));
	req->next      = NULL;

	DBG(TLOG_DBG, "blk: 0x%04x, writing zero bitmap at 0x%08"PRIx64"\n",
	    s->bat.pbw_blk, offset);

	lock_bitmap(bm);
	add_to_transaction(&bm->tx, req);
	aio_write(s, req, offset);
}

/* This is a performance optimization. When writing sequentially into full 
 * blocks, skipping (up-to-date) bitmaps causes an approx. 25% reduction in 
 * throughput. To prevent skipping, we issue redundant writes into the (padded) 
 * bitmap area just to make all writes sequential. This will help VHDs on raw 
 * block devices, while the FS-based VHDs shouldn't suffer much.
 *
 * Note that it only makes sense to perform this reduntant bitmap write if the 
 * block is completely full (i.e. the batmap entry is set). If the block is not 
 * completely full then one of the following two things will be true:
 *  1. we'll either be allocating new sectors in this block and writing its
 *     bitmap transactionally, which will be slow anyways; or
 *  2. the IO will be skipping over the unallocated sectors again, so the
 *     pattern will not be sequential anyways
 * In either case a redundant bitmap write becomes pointless. This fact 
 * simplifies the implementation of redundant writes: since we know the bitmap 
 * cannot be updated by anyone else, we don't have to worry about transactions 
 * or potential write conflicts.
 * */
static void
schedule_redundant_bm_write(struct vhd_state *s, uint32_t blk)
{
	uint64_t offset;
	struct vhd_request *req;

	ASSERT(s->vhd.footer.type != HD_TYPE_FIXED);
	ASSERT(test_batmap(s, blk));

	req = alloc_vhd_request(s);
	if (!req) 
		return;

	req->treq.buf = s->padbm_buf;

	offset = bat_entry(s, blk);
	ASSERT(offset != DD_BLK_UNUSED);
	offset <<= VHD_SECTOR_SHIFT;
	offset -= s->padbm_size - (s->bm_secs << VHD_SECTOR_SHIFT);

	req->op        = VHD_OP_REDUNDANT_BM_WRITE;
	req->treq.sec  = blk * s->spb;
	req->treq.secs = s->padbm_size >> VHD_SECTOR_SHIFT;
	req->next      = NULL;

	DBG(TLOG_DBG, "blk: %u, writing redundant bitmap at %" PRIu64 "\n",
	    blk, offset);

	aio_write(s, req, offset);
}

static int
update_bat(struct vhd_state *s, uint32_t blk)
{
	int err;
	uint64_t lb_end;
	struct vhd_bitmap *bm;

	ASSERT(bat_entry(s, blk) == DD_BLK_UNUSED);
	
	if (bat_locked(s)) {
		ASSERT(s->bat.pbw_blk == blk);
		return 0;
	}

	/* empty bitmap could already be in
	 * cache if earlier bat update failed */
	bm = get_bitmap(s, blk);
	if (!bm) {
		/* install empty bitmap in cache */
		err = alloc_vhd_bitmap(s, &bm, blk);
		if (err) 
			return err;

		install_bitmap(s, bm);
	}

	lock_bat(s);
	lb_end = reserve_new_block(s, blk);
	if (lb_end >> 32) {
		unlock_bat(s);
		return -(lb_end >> 32);
	}
	schedule_zero_bm_write(s, bm, lb_end);
	set_vhd_flag(bm->tx.status, VHD_FLAG_TX_UPDATE_BAT);

	return 0;
}

static int
allocate_block(struct vhd_state *s, uint32_t blk)
{
	int err, gap;
	uint64_t offset, size;
	struct vhd_bitmap *bm;
	ssize_t count;
	uint64_t next_db;

	ASSERT(bat_entry(s, blk) == DD_BLK_UNUSED);

	if (bat_locked(s)) {
		ASSERT(s->bat.pbw_blk == blk);
		if (s->bat.req.error)
			return -EBUSY;
		return 0;
	}

	gap     = 0;
	offset  = vhd_sectors_to_bytes(s->next_db);
	next_db = s->next_db;

	/* data region of segment should begin on page boundary */
	if ((next_db + s->bm_secs) % s->spp) {
		gap = (s->spp - ((next_db + s->bm_secs) % s->spp));
		next_db += gap;
	}

	if (next_db > UINT_MAX)
		return -ENOSPC;

	s->next_db = next_db;

	s->bat.pbw_blk = blk;
	s->bat.pbw_offset = s->next_db;

	DBG(TLOG_DBG, "blk: 0x%04x, pbwo: 0x%08"PRIx64"\n",
	    blk, s->bat.pbw_offset);

	if (lseek(s->vhd.fd, offset, SEEK_SET) == (off_t)-1) {
		ERR(s, -errno, "lseek failed\n");
		return -errno;
	}

	size  = vhd_sectors_to_bytes(s->spb + s->bm_secs + gap);
	count = write(s->vhd.fd, vhd_zeros(size), size);
	if (count != size) {
		err = count < 0 ? -errno : -ENOSPC;
		ERR(s, -errno,
		    "write failed (%zd, offset %"PRIu64")\n", count, offset);
		return err;
	}

	/* empty bitmap could already be in
	 * cache if earlier bat update failed */
	bm = get_bitmap(s, blk);
	if (!bm) {
		/* install empty bitmap in cache */
		err = alloc_vhd_bitmap(s, &bm, blk);
		if (err) 
			return err;

		install_bitmap(s, bm);
	}

	lock_bat(s);
	lock_bitmap(bm);
	schedule_bat_write(s);
	add_to_transaction(&bm->tx, &s->bat.req);

	return 0;
}

static int 
schedule_data_read(struct vhd_state *s, td_request_t treq, vhd_flag_t flags)
{
	uint64_t offset;
	uint32_t blk = 0, sec = 0;
	struct vhd_bitmap  *bm;
	struct vhd_request *req;

	if (s->vhd.footer.type == HD_TYPE_FIXED) {
		offset = vhd_sectors_to_bytes(treq.sec);
		goto make_request;
	}

	blk    = treq.sec / s->spb;
	sec    = treq.sec % s->spb;
	bm     = get_bitmap(s, blk);
	offset = bat_entry(s, blk);

	ASSERT(offset != DD_BLK_UNUSED);
	ASSERT(test_batmap(s, blk) || (bm && bitmap_valid(bm)));

	offset += s->bm_secs + sec;
	offset  = vhd_sectors_to_bytes(offset);

 make_request:
	req = alloc_vhd_request(s);
	if (!req) 
		return -EBUSY;

	req->treq  = treq;
	req->flags = flags;
	req->op    = VHD_OP_DATA_READ;
	req->next  = NULL;

	aio_read(s, req, offset);

	DBG(TLOG_DBG, "%s: lsec: 0x%08"PRIx64", blk: 0x%04x, sec: 0x%04x, "
	    "nr_secs: 0x%04x, offset: 0x%08"PRIx64", flags: 0x%08x, buf: %p\n",
	    s->vhd.file, treq.sec, blk, sec, treq.secs, offset, req->flags,
	    treq.buf);

	return 0;
}

static int
schedule_data_write(struct vhd_state *s, td_request_t treq, vhd_flag_t flags)
{
	int err;
	uint64_t offset;
	uint32_t blk = 0, sec = 0;
	struct vhd_bitmap  *bm = NULL;
	struct vhd_request *req;

	if (s->vhd.footer.type == HD_TYPE_FIXED) {
		offset = vhd_sectors_to_bytes(treq.sec);
		goto make_request;
	}

	blk    = treq.sec / s->spb;
	sec    = treq.sec % s->spb;
	offset = bat_entry(s, blk);

	if (test_vhd_flag(flags, VHD_FLAG_REQ_UPDATE_BAT)) {
		if (test_vhd_flag(s->flags, VHD_FLAG_OPEN_PREALLOCATE))
			err = allocate_block(s, blk);
		else
			err = update_bat(s, blk);

		if (err)
			return err;

		offset = s->bat.pbw_offset;
	}

	offset += s->bm_secs + sec;
	offset  = vhd_sectors_to_bytes(offset);

 make_request:
	req = alloc_vhd_request(s);
	if (!req)
		return -EBUSY;

	req->treq  = treq;
	req->flags = flags;
	req->op    = VHD_OP_DATA_WRITE;
	req->next  = NULL;

	if (test_vhd_flag(flags, VHD_FLAG_REQ_UPDATE_BITMAP)) {
		bm = get_bitmap(s, blk);
		ASSERT(bm && bitmap_valid(bm));
		lock_bitmap(bm);

		if (bm->tx.closed) {
			add_to_tail(&bm->queue, req);
			set_vhd_flag(req->flags, VHD_FLAG_REQ_QUEUED);
		} else
			add_to_transaction(&bm->tx, req);
	} else if (sec == 0 && 	/* first sector inside data block */
		   s->vhd.footer.type != HD_TYPE_FIXED && 
		   bat_entry(s, blk) != s->first_db &&
		   test_batmap(s, blk))
		schedule_redundant_bm_write(s, blk);

	aio_write(s, req, offset);

	DBG(TLOG_DBG, "%s: lsec: 0x%08"PRIx64", blk: 0x%04x, sec: 0x%04x, "
	    "nr_secs: 0x%04x, offset: 0x%08"PRIx64", flags: 0x%08x\n",
	    s->vhd.file, treq.sec, blk, sec, treq.secs, offset, req->flags);

	return 0;
}

static int 
schedule_bitmap_read(struct vhd_state *s, uint32_t blk)
{
	int err;
	uint64_t offset;
	struct vhd_bitmap  *bm;
	struct vhd_request *req = NULL;

	ASSERT(vhd_type_dynamic(&s->vhd));

	offset = bat_entry(s, blk);

	ASSERT(offset != DD_BLK_UNUSED);
	ASSERT(!get_bitmap(s, blk));

	offset = vhd_sectors_to_bytes(offset);

	err = alloc_vhd_bitmap(s, &bm, blk);
	if (err)
		return err;

	req = &bm->req;
	init_vhd_request(s, req);

	req->treq.sec  = blk * s->spb;
	req->treq.secs = s->bm_secs;
	req->treq.buf  = bm->map;
	req->treq.cb   = NULL;
	req->op        = VHD_OP_BITMAP_READ;
	req->next      = NULL;

	aio_read(s, req, offset);
	lock_bitmap(bm);
	install_bitmap(s, bm);
	set_vhd_flag(bm->status, VHD_FLAG_BM_READ_PENDING);

	DBG(TLOG_DBG, "%s: lsec: 0x%08"PRIx64", blk: 0x%04x, nr_secs: 0x%04x, "
	    "offset: 0x%08"PRIx64"\n", s->vhd.file, req->treq.sec, blk,
	    req->treq.secs, offset);

	return 0;
}

static void
schedule_bitmap_write(struct vhd_state *s, uint32_t blk)
{
	uint64_t offset;
	struct vhd_bitmap  *bm;
	struct vhd_request *req;

	bm     = get_bitmap(s, blk);
	offset = bat_entry(s, blk);

	ASSERT(vhd_type_dynamic(&s->vhd));
	ASSERT(bm && bitmap_valid(bm) &&
	       !test_vhd_flag(bm->status, VHD_FLAG_BM_WRITE_PENDING));

	if (offset == DD_BLK_UNUSED) {
		ASSERT(bat_locked(s) && s->bat.pbw_blk == blk);
		offset = s->bat.pbw_offset;
	}
	
	offset = vhd_sectors_to_bytes(offset);

	req = &bm->req;
	init_vhd_request(s, req);

	req->treq.sec  = blk * s->spb;
	req->treq.secs = s->bm_secs;
	req->treq.buf  = bm->shadow;
	req->treq.cb   = NULL;
	req->op        = VHD_OP_BITMAP_WRITE;
	req->next      = NULL;

	aio_write(s, req, offset);
	lock_bitmap(bm);
	touch_bitmap(s, bm);     /* bump lru count */
	set_vhd_flag(bm->status, VHD_FLAG_BM_WRITE_PENDING);

	DBG(TLOG_DBG, "%s: blk: 0x%04x, sec: 0x%08"PRIx64", nr_secs: 0x%04x, "
	    "offset: 0x%"PRIx64"\n", s->vhd.file, blk, req->treq.sec,
	    req->treq.secs, offset);
}

/* 
 * queued requests will be submitted once the bitmap
 * describing them is read and the requests are validated. 
 */
static int
__vhd_queue_request(struct vhd_state *s, uint8_t op, td_request_t treq)
{
	uint32_t blk;
	struct vhd_bitmap  *bm;
	struct vhd_request *req;

	ASSERT(vhd_type_dynamic(&s->vhd));

	blk = treq.sec / s->spb;
	bm  = get_bitmap(s, blk);

	ASSERT(bm && test_vhd_flag(bm->status, VHD_FLAG_BM_READ_PENDING));

	req = alloc_vhd_request(s);
	if (!req)
		return -EBUSY;

	req->treq = treq;
	req->op   = op;
	req->next = NULL;

	add_to_tail(&bm->waiting, req);
	lock_bitmap(bm);

	DBG(TLOG_DBG, "%s: lsec: 0x%08"PRIx64", blk: 0x%04x nr_secs: 0x%04x, "
	    "op: %u\n", s->vhd.file, treq.sec, blk, treq.secs, op);

	TRACE(s);
	return 0;
}

static void
vhd_queue_read(td_driver_t *driver, td_request_t treq)
{
	struct vhd_state *s = (struct vhd_state *)driver->data;

	DBG(TLOG_DBG, "%s: lsec: 0x%08"PRIx64", secs: 0x%04x (seg: %d)\n",
	    s->vhd.file, treq.sec, treq.secs, treq.sidx);

	while (treq.secs) {
		int err;
		td_request_t clone;

		err   = 0;
		clone = treq;

		switch (read_bitmap_cache(s, clone.sec, VHD_OP_DATA_READ)) {
		case -EINVAL:
			err = -EINVAL;
			goto fail;

		case VHD_BM_BAT_CLEAR:
			clone.secs = MIN(clone.secs, s->spb - (clone.sec % s->spb));
			td_forward_request(clone);
			break;

		case VHD_BM_BIT_CLEAR:
			clone.secs = read_bitmap_cache_span(s, clone.sec, clone.secs, 0);
			td_forward_request(clone);
			break;

		case VHD_BM_BIT_SET:
			clone.secs = read_bitmap_cache_span(s, clone.sec, clone.secs, 1);
			err = schedule_data_read(s, clone, 0);
			if (err)
				goto fail;
			break;

		case VHD_BM_NOT_CACHED:
			err = schedule_bitmap_read(s, clone.sec / s->spb);
			if (err)
				goto fail;

			clone.secs = MIN(clone.secs, s->spb - (clone.sec % s->spb));
			err = __vhd_queue_request(s, VHD_OP_DATA_READ, clone);
			if (err)
				goto fail;
			break;

		case VHD_BM_READ_PENDING:
			clone.secs = MIN(clone.secs, s->spb - (clone.sec % s->spb));
			err = __vhd_queue_request(s, VHD_OP_DATA_READ, clone);
			if (err)
				goto fail;
			break;

		case VHD_BM_BAT_LOCKED:
		default:
			ASSERT(0);
			break;
		}

		treq.sec  += clone.secs;
		treq.secs -= clone.secs;
		treq.buf  += vhd_sectors_to_bytes(clone.secs);
		continue;

	fail:
		clone.secs = treq.secs;
		td_complete_request(clone, err);
		break;
	}
}

static void
vhd_queue_write(td_driver_t *driver, td_request_t treq)
{
	struct vhd_state *s = (struct vhd_state *)driver->data;

	DBG(TLOG_DBG, "%s: lsec: 0x%08"PRIx64", secs: 0x%04x, (seg: %d)\n",
	    s->vhd.file, treq.sec, treq.secs, treq.sidx);

	while (treq.secs) {
		int err;
		uint8_t flags;
		td_request_t clone;

		err   = 0;
		flags = 0;
		clone = treq;

		switch (read_bitmap_cache(s, clone.sec, VHD_OP_DATA_WRITE)) {
		case -EINVAL:
			err = -EINVAL;
			goto fail;

		case VHD_BM_BAT_LOCKED:
			err = -EBUSY;
			goto fail;

		case VHD_BM_BAT_CLEAR:
			flags      = (VHD_FLAG_REQ_UPDATE_BAT |
				      VHD_FLAG_REQ_UPDATE_BITMAP);
			clone.secs = MIN(clone.secs, s->spb - (clone.sec % s->spb));
			err        = schedule_data_write(s, clone, flags);
			if (err)
				goto fail;
			break;

		case VHD_BM_BIT_CLEAR:
			flags      = VHD_FLAG_REQ_UPDATE_BITMAP;
			clone.secs = read_bitmap_cache_span(s, clone.sec, clone.secs, 0);
			err        = schedule_data_write(s, clone, flags);
			if (err)
				goto fail;
			break;

		case VHD_BM_BIT_SET:
			clone.secs = read_bitmap_cache_span(s, clone.sec, clone.secs, 1);
			err = schedule_data_write(s, clone, 0);
			if (err)
				goto fail;
			break;

		case VHD_BM_NOT_CACHED:
			clone.secs = MIN(clone.secs, s->spb - (clone.sec % s->spb));
			err = schedule_bitmap_read(s, clone.sec / s->spb);
			if (err)
				goto fail;

			err = __vhd_queue_request(s, VHD_OP_DATA_WRITE, clone);
			if (err)
				goto fail;
			break;

		case VHD_BM_READ_PENDING:
			clone.secs = MIN(clone.secs, s->spb - (clone.sec % s->spb));
			err = __vhd_queue_request(s, VHD_OP_DATA_WRITE, clone);
			if (err)
				goto fail;
			break;

		default:
			ASSERT(0);
			break;
		}

		treq.sec  += clone.secs;
		treq.secs -= clone.secs;
		treq.buf  += vhd_sectors_to_bytes(clone.secs);
		continue;

	fail:
		clone.secs = treq.secs;
		td_complete_request(clone, err);
		break;
	}
}

static inline void
signal_completion(struct vhd_request *list, int error)
{
	struct vhd_state *s;
	struct vhd_request *r, *next;

	if (!list)
		return;

	r = list;
	s = list->state;

	while (r) {
		int err;

		err  = (error ? error : r->error);
		next = r->next;
		td_complete_request(r->treq, err);
		DBG(TLOG_DBG, "lsec: 0x%08"PRIx64", blk: 0x%04"PRIx64", "
		    "err: %d\n", r->treq.sec, r->treq.sec / s->spb, err);
		free_vhd_request(s, r);
		r    = next;

		s->returned++;
		TRACE(s);
	}
}

static void
start_new_bitmap_transaction(struct vhd_state *s, struct vhd_bitmap *bm)
{
	struct vhd_transaction *tx;
	struct vhd_request *r, *next;
	int i;

	if (!bm->queue.head)
		return;

	DBG(TLOG_DBG, "blk: 0x%04x\n", bm->blk);

	r  = bm->queue.head;
	tx = &bm->tx;
	clear_req_list(&bm->queue);

	if (r && bat_entry(s, bm->blk) == DD_BLK_UNUSED)
		tx->error = -EIO;

	while (r) {
		next    = r->next;
		r->next = NULL;
		clear_vhd_flag(r->flags, VHD_FLAG_REQ_QUEUED);

		add_to_transaction(tx, r);
		if (test_vhd_flag(r->flags, VHD_FLAG_REQ_FINISHED)) {
			tx->finished++;
			if (!r->error) {
				uint32_t sec = r->treq.sec % s->spb;
				for (i = 0; i < r->treq.secs; i++)
					vhd_bitmap_set(&s->vhd,
						       bm->shadow, sec + i);
			}
		}
		r = next;
	}

	/* perhaps all the queued writes already completed? */
	if (tx->started && transaction_completed(tx))
		finish_data_transaction(s, bm);
}

static void
finish_bat_transaction(struct vhd_state *s, struct vhd_bitmap *bm)
{
	struct vhd_transaction *tx = &bm->tx;

	if (!bat_locked(s))
		return;

	if (s->bat.pbw_blk != bm->blk)
		return;

	if (!s->bat.req.error)
		goto release;

	if (!test_vhd_flag(tx->status, VHD_FLAG_TX_LIVE))
		goto release;

	tx->closed = 1;
	return;

 release:
	DBG(TLOG_DBG, "blk: 0x%04x\n", bm->blk);
	unlock_bat(s);
	init_bat(s);
}

static void
finish_bitmap_transaction(struct vhd_state *s,
			  struct vhd_bitmap *bm, int error)
{
	int map_size;
	struct vhd_transaction *tx = &bm->tx;

	DBG(TLOG_DBG, "blk: 0x%04x, err: %d\n", bm->blk, error);
	tx->error = (tx->error ? tx->error : error);
	map_size  = vhd_sectors_to_bytes(s->bm_secs);

	if (!test_vhd_flag(s->flags, VHD_FLAG_OPEN_PREALLOCATE)) {
		if (test_vhd_flag(tx->status, VHD_FLAG_TX_UPDATE_BAT)) {
			/* still waiting for bat write */
			ASSERT(bm->blk == s->bat.pbw_blk);
			ASSERT(test_vhd_flag(s->bat.status, 
					     VHD_FLAG_BAT_WRITE_STARTED));
			s->bat.req.tx = tx;
			return;
		}
	}

	if (tx->error) {
		/* undo changes to shadow */
		memcpy(bm->shadow, bm->map, map_size);
	} else {
		/* complete atomic write */
		memcpy(bm->map, bm->shadow, map_size);
		if (!test_batmap(s, bm->blk) && bitmap_full(s, bm))
			set_batmap(s, bm->blk);
	}

	/* transaction done; signal completions */
	signal_completion(tx->requests.head, tx->error);
	init_tx(tx);
	start_new_bitmap_transaction(s, bm);

	if (!bitmap_in_use(bm))
		unlock_bitmap(bm);

	finish_bat_transaction(s, bm);
}

static void
finish_data_transaction(struct vhd_state *s, struct vhd_bitmap *bm)
{
	struct vhd_transaction *tx = &bm->tx;

	DBG(TLOG_DBG, "blk: 0x%04x\n", bm->blk);

	tx->closed = 1;

	if (!tx->error)
		return schedule_bitmap_write(s, bm->blk);

	return finish_bitmap_transaction(s, bm, 0);
}

static void
finish_bat_write(struct vhd_request *req)
{
	struct vhd_bitmap *bm;
	struct vhd_transaction *tx;
	struct vhd_state *s = req->state;

	s->returned++;
	TRACE(s);

	bm = get_bitmap(s, s->bat.pbw_blk);

	DBG(TLOG_DBG, "blk 0x%04x, pbwo: 0x%08"PRIx64", err %d\n",
	    s->bat.pbw_blk, s->bat.pbw_offset, req->error);
	ASSERT(bm && bitmap_valid(bm));
	ASSERT(bat_locked(s) &&
	       test_vhd_flag(s->bat.status, VHD_FLAG_BAT_WRITE_STARTED));

	tx = &bm->tx;
	ASSERT(test_vhd_flag(tx->status, VHD_FLAG_TX_LIVE));

	if (!req->error) {
		bat_entry(s, s->bat.pbw_blk) = s->bat.pbw_offset;
		s->next_db = s->bat.pbw_offset + s->spb + s->bm_secs;
	} else
		tx->error = req->error;

	if (test_vhd_flag(s->flags, VHD_FLAG_OPEN_PREALLOCATE)) {
		tx->finished++;
		remove_from_req_list(&tx->requests, req);
		if (transaction_completed(tx))
			finish_data_transaction(s, bm);
	} else {
		clear_vhd_flag(tx->status, VHD_FLAG_TX_UPDATE_BAT);
		if (s->bat.req.tx)
			finish_bitmap_transaction(s, bm, req->error);
	}

	finish_bat_transaction(s, bm);
}

static void
finish_zero_bm_write(struct vhd_request *req)
{
	uint32_t blk;
	struct vhd_bitmap *bm;
	struct vhd_transaction *tx = req->tx;
	struct vhd_state *s = req->state;

	s->returned++;
	TRACE(s);

	blk = req->treq.sec / s->spb;
	bm  = get_bitmap(s, blk);

	DBG(TLOG_DBG, "blk: 0x%04x\n", blk);
	ASSERT(bat_locked(s));
	ASSERT(s->bat.pbw_blk == blk);
	ASSERT(bm && bitmap_valid(bm) && bitmap_locked(bm));

	tx->finished++;
	remove_from_req_list(&tx->requests, req);

	if (req->error) {
		unlock_bat(s);
		init_bat(s);
		tx->error = req->error;
		clear_vhd_flag(tx->status, VHD_FLAG_TX_UPDATE_BAT);
	} else
		schedule_bat_write(s);

	if (transaction_completed(tx))
		finish_data_transaction(s, bm);
}

static int
finish_redundant_bm_write(struct vhd_request *req)
{
	/* uint32_t blk; */
	struct vhd_state *s = (struct vhd_state *) req->state;

	s->returned++;
	TRACE(s);	
	/* blk = req->treq.sec / s->spb;
	   DBG(TLOG_DBG, "blk: %u\n", blk); */

	if (req->error) {
		ERR(s, req->error, "lsec: 0x%08"PRIx64, req->treq.sec);
	}
	free_vhd_request(s, req);
	s->debug_done_redundant_writes++;
	return 0;
}


static void
finish_bitmap_read(struct vhd_request *req)
{
	uint32_t blk;
	struct vhd_bitmap  *bm;
	struct vhd_request *r, *next;
	struct vhd_state   *s = req->state;

	s->returned++;
	TRACE(s);

	blk = req->treq.sec / s->spb;
	bm  = get_bitmap(s, blk);

	DBG(TLOG_DBG, "blk: 0x%04x\n", blk);
	ASSERT(bm && test_vhd_flag(bm->status, VHD_FLAG_BM_READ_PENDING));

	r = bm->waiting.head;
	clear_req_list(&bm->waiting);
	clear_vhd_flag(bm->status, VHD_FLAG_BM_READ_PENDING);

	if (!req->error) {
		memcpy(bm->shadow, bm->map, vhd_sectors_to_bytes(s->bm_secs));

		while (r) {
			struct vhd_request tmp;

			tmp  = *r;
			next =  r->next;
			free_vhd_request(s, r);

			ASSERT(tmp.op == VHD_OP_DATA_READ || 
			       tmp.op == VHD_OP_DATA_WRITE);

			if (tmp.op == VHD_OP_DATA_READ)
				vhd_queue_read(s->driver, tmp.treq);
			else if (tmp.op == VHD_OP_DATA_WRITE)
				vhd_queue_write(s->driver, tmp.treq);

			r = next;
		}
	} else {
		int err = req->error;
		unlock_bitmap(bm);
		free_vhd_bitmap(s, bm);
		return signal_completion(r, err);
	}

	if (!bitmap_in_use(bm))
		unlock_bitmap(bm);
}

static void
finish_bitmap_write(struct vhd_request *req)
{
	uint32_t blk;
	struct vhd_bitmap  *bm;
	struct vhd_transaction *tx;
	struct vhd_state *s = req->state;

	s->returned++;
	TRACE(s);

	blk = req->treq.sec / s->spb;
	bm  = get_bitmap(s, blk);
	tx  = &bm->tx;

	DBG(TLOG_DBG, "blk: 0x%04x, started: %d, finished: %d\n",
	    blk, tx->started, tx->finished);
	ASSERT(tx->closed);
	ASSERT(bm && bitmap_valid(bm));
	ASSERT(test_vhd_flag(bm->status, VHD_FLAG_BM_WRITE_PENDING));

	clear_vhd_flag(bm->status, VHD_FLAG_BM_WRITE_PENDING);

	finish_bitmap_transaction(s, bm, req->error);
}

static void
finish_data_read(struct vhd_request *req)
{
	struct vhd_state *s = req->state;

	DBG(TLOG_DBG, "lsec 0x%08"PRIx64", blk: 0x%04"PRIx64"\n", 
	    req->treq.sec, req->treq.sec / s->spb);
	signal_completion(req, 0);
}

static void
finish_data_write(struct vhd_request *req)
{
	int i;
	struct vhd_transaction *tx = req->tx;
	struct vhd_state *s = (struct vhd_state *)req->state;

	set_vhd_flag(req->flags, VHD_FLAG_REQ_FINISHED);

	if (tx) {
		uint32_t blk, sec;
		struct vhd_bitmap *bm;

		blk = req->treq.sec / s->spb;
		sec = req->treq.sec % s->spb;
		bm  = get_bitmap(s, blk);

		ASSERT(bm && bitmap_valid(bm) && bitmap_locked(bm));

		tx->finished++;

		DBG(TLOG_DBG, "lsec: 0x%08"PRIx64", blk: 0x04%"PRIx64", "
		    "tx->started: %d, tx->finished: %d\n", req->treq.sec,
		    req->treq.sec / s->spb, tx->started, tx->finished);

		if (!req->error)
			for (i = 0; i < req->treq.secs; i++)
				vhd_bitmap_set(&s->vhd, bm->shadow,  sec + i);

		if (transaction_completed(tx))
			finish_data_transaction(s, bm);

	} else if (!test_vhd_flag(req->flags, VHD_FLAG_REQ_QUEUED)) {
		ASSERT(!req->next);
		DBG(TLOG_DBG, "lsec: 0x%08"PRIx64", blk: 0x%04"PRIx64"\n", 
		    req->treq.sec, req->treq.sec / s->spb);
		signal_completion(req, 0);
	}
}

void
vhd_complete(void *arg, struct tiocb *tiocb, int err)
{
	struct vhd_request *req = (struct vhd_request *)arg;
	struct vhd_state *s = req->state;
	struct iocb *io = &tiocb->iocb;

	s->completed++;
	TRACE(s);

	req->error = err;

	if (req->error)
		ERR(s, req->error, "%s: op: %u, lsec: %"PRIu64", secs: %u, "
		    "nbytes: %lu, blk: %"PRIu64", blk_offset: %u",
		    s->vhd.file, req->op, req->treq.sec, req->treq.secs,
		    io->u.c.nbytes, req->treq.sec / s->spb,
		    bat_entry(s, req->treq.sec / s->spb));

	switch (req->op) {
	case VHD_OP_DATA_READ:
		finish_data_read(req);
		break;

	case VHD_OP_DATA_WRITE:
		finish_data_write(req);
		break;

	case VHD_OP_BITMAP_READ:
		finish_bitmap_read(req);
		break;

	case VHD_OP_BITMAP_WRITE:
		finish_bitmap_write(req);
		break;

	case VHD_OP_ZERO_BM_WRITE:
		finish_zero_bm_write(req);
		break;

	case VHD_OP_REDUNDANT_BM_WRITE:
		finish_redundant_bm_write(req);
		break;

	case VHD_OP_BAT_WRITE:
		finish_bat_write(req);
		break;

	default:
		ASSERT(0);
		break;
	}
}

void 
vhd_debug(td_driver_t *driver)
{
	int i;
	struct vhd_state *s = (struct vhd_state *)driver->data;

	DBG(TLOG_WARN, "%s: QUEUED: 0x%08"PRIx64", COMPLETED: 0x%08"PRIx64", "
	    "RETURNED: 0x%08"PRIx64"\n", s->vhd.file, s->queued, s->completed,
	    s->returned);
	DBG(TLOG_WARN, "WRITES: 0x%08"PRIx64", AVG_WRITE_SIZE: %f\n",
	    s->writes, (s->writes ? ((float)s->write_size / s->writes) : 0.0));
	DBG(TLOG_WARN, "READS: 0x%08"PRIx64", AVG_READ_SIZE: %f\n",
	    s->reads, (s->reads ? ((float)s->read_size / s->reads) : 0.0));

	DBG(TLOG_WARN, "ALLOCATED REQUESTS: (%u total)\n", VHD_REQS_DATA);
	for (i = 0; i < VHD_REQS_DATA; i++) {
		struct vhd_request *r = &s->vreq_list[i];
		td_request_t *t       = &r->treq;
		const char *vname     = t->vreq ? t->vreq->name: NULL;
		if (t->secs)
			DBG(TLOG_WARN, "%d: vreq: %s.%d, err: %d, op: %d,"
			    " lsec: 0x%08"PRIx64", flags: %d, this: %p, "
			    "next: %p, tx: %p\n", i, vname, t->sidx, r->error, r->op,
			    t->sec, r->flags, r, r->next, r->tx);
	}

	DBG(TLOG_WARN, "BITMAP CACHE:\n");
	for (i = 0; i < VHD_CACHE_SIZE; i++) {
		int qnum = 0, wnum = 0, rnum = 0;
		struct vhd_bitmap *bm = s->bitmap[i];
		struct vhd_transaction *tx;
		struct vhd_request *r;

		if (!bm)
			continue;

		tx = &bm->tx;
		r = bm->queue.head;
		while (r) {
			qnum++;
			r = r->next;
		}

		r = bm->waiting.head;
		while (r) {
			wnum++;
			r = r->next;
		}

		r = tx->requests.head;
		while (r) {
			rnum++;
			r = r->next;
		}

		DBG(TLOG_WARN, "%d: blk: 0x%04x, status: 0x%08x, q: %p, qnum: %d, w: %p, "
		    "wnum: %d, locked: %d, in use: %d, tx: %p, tx_error: %d, "
		    "started: %d, finished: %d, status: %u, reqs: %p, nreqs: %d\n",
		    i, bm->blk, bm->status, bm->queue.head, qnum, bm->waiting.head,
		    wnum, bitmap_locked(bm), bitmap_in_use(bm), tx, tx->error,
		    tx->started, tx->finished, tx->status, tx->requests.head, rnum);
	}

	DBG(TLOG_WARN, "BAT: status: 0x%08x, pbw_blk: 0x%04x, "
	    "pbw_off: 0x%08"PRIx64", tx: %p\n", s->bat.status, s->bat.pbw_blk,
	    s->bat.pbw_offset, s->bat.req.tx);

/*
	for (i = 0; i < s->hdr.max_bat_size; i++)
		DPRINTF("%d: %u\n", i, s->bat.bat[i]);
*/
}

struct tap_disk tapdisk_vhd = {
	.disk_type          = "tapdisk_vhd",
	.flags              = 0,
	.private_data_size  = sizeof(struct vhd_state),
	.td_open            = _vhd_open,
	.td_close           = _vhd_close,
	.td_queue_read      = vhd_queue_read,
	.td_queue_write     = vhd_queue_write,
	.td_get_parent_id   = vhd_get_parent_id,
	.td_validate_parent = vhd_validate_parent,
	.td_debug           = vhd_debug,
};

[-- Attachment #3: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2015-06-25  4:51 ` Help Luc Pierard de Maujouy
@ 2015-06-25  8:51   ` Ian Campbell
  0 siblings, 0 replies; 278+ messages in thread
From: Ian Campbell @ 2015-06-25  8:51 UTC (permalink / raw)
  To: Luc Pierard de Maujouy; +Cc: xen-devel

On Thu, 2015-06-25 at 07:51 +0300, Luc Pierard de Maujouy wrote:

You should try and use a descriptive subject in the future so that
people who know about the area are inspired to read the mail.

Also in the first instance this seems more suitable for the xen-users
list.

> domU is expected to request dom0 for additionnal RAM before starting to
> use swap.

I don't know much about tmem systems, but isn't there some daemon
required in the guest to achieve that? Or perhaps that is what
CONFIG_XEN_SELFBALLOONING in the domU config is for? Is that enabled
along with things like FRONTSWAP and friends?

Some more details of exactly what you've added to which command lines
and some logs might allow someone to spot where things are not correct.

Ian.

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
       [not found] <557FA708.7020101@yahoo.fr>
@ 2015-06-25  4:51 ` Luc Pierard de Maujouy
  2015-06-25  8:51   ` Help Ian Campbell
  0 siblings, 1 reply; 278+ messages in thread
From: Luc Pierard de Maujouy @ 2015-06-25  4:51 UTC (permalink / raw)
  To: xen-devel

My apologize for been to late for subscription confirmation.

Resubmitting.

Env : xen 4.5 + kernel 4.0.5 + xl stack, working dom0/domU.
Level : Quite critical despite integration env as using source distro
(gentoo)

tmem is on xen command line, and reported in xl dmesg.
tmem module in loaded via init script (open-rc).
tmem has been added at the end of the kernel command line, though syntax
may be wrong.

ballooning on in dom0 cfg file.
maxmem is defined in domU cfg file.
maxmem>memory.

RAM can be manually redistributed beetween dom0 & domU via mem-set command.

When domU is forced to require more RAM than currently reported as
available via its top command, domU RAM is not automatically resized.

domU is expected to request dom0 for additionnal RAM before starting to
use swap.

Is ballooning feature misunderstood should misconfiguration be
suspected, what should be investigated?

Thks 4 ur attention, interest & support.

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
@ 2015-01-21 20:38 Natesh Relhan
  0 siblings, 0 replies; 278+ messages in thread
From: Natesh Relhan @ 2015-01-21 20:38 UTC (permalink / raw)
  To: kernel-janitors

I am a kernel newbie. How to begin task type "Audit return codes". I
mean where to look and start.

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
  2015-01-14 10:19 ` Help Anuz Pratap Singh Tomar
@ 2015-01-14 10:24   ` Anuz Pratap Singh Tomar
  0 siblings, 0 replies; 278+ messages in thread
From: Anuz Pratap Singh Tomar @ 2015-01-14 10:24 UTC (permalink / raw)
  To: kernelnewbies

On Wed, Jan 14, 2015 at 10:19 AM, Anuz Pratap Singh Tomar <
chambilkethakur@gmail.com> wrote:

>
> On Wed, Jan 14, 2015 at 9:16 AM, SAJID HOSSAIN <
> sajid.sajid5786 at outlook.com> wrote:
>
>> Hi everyone,
>> I am new to open source and really interested in contributing to Linux
>> kernel, can someone please help me how to get started.
>> P.S : I have good knowledge in computer architecture, operating systems
>> and C/C++
>>
>> 1. Learn to use proper subject line, "help" doesn't ring any bell at all.
> 2. This question is asked every now and then, it is advisable to search
> the mailing list archives before asking this question.
> 3. Google a bit and work through basics like learning about Linux in
> general and programming and open source culture.
> 4. READ MORE, I mean read a lot before you ask a question. When you have
> exhausted all the avenues of self help, then come here with specific
> problem and we would be able to help.
> 5.  I wrote this a while ago but still relevant
> http://kernelnewbies.org/mailinglistguidelines
>
> Also dig kernelnewbies.org  for more details.
>
> Here is another link for newbies
http://kernelnewbies.org/FirstKernelPatch


-- 
Thank you
Warm Regards
Anuz
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20150114/ea3fc3a8/attachment.html 

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
  2015-01-14  9:16 Help SAJID HOSSAIN
@ 2015-01-14 10:19 ` Anuz Pratap Singh Tomar
  2015-01-14 10:24   ` Help Anuz Pratap Singh Tomar
  0 siblings, 1 reply; 278+ messages in thread
From: Anuz Pratap Singh Tomar @ 2015-01-14 10:19 UTC (permalink / raw)
  To: kernelnewbies

On Wed, Jan 14, 2015 at 9:16 AM, SAJID HOSSAIN <sajid.sajid5786@outlook.com>
wrote:

> Hi everyone,
> I am new to open source and really interested in contributing to Linux
> kernel, can someone please help me how to get started.
> P.S : I have good knowledge in computer architecture, operating systems
> and C/C++
>
> 1. Learn to use proper subject line, "help" doesn't ring any bell at all.
2. This question is asked every now and then, it is advisable to search the
mailing list archives before asking this question.
3. Google a bit and work through basics like learning about Linux in
general and programming and open source culture.
4. READ MORE, I mean read a lot before you ask a question. When you have
exhausted all the avenues of self help, then come here with specific
problem and we would be able to help.
5.  I wrote this a while ago but still relevant
http://kernelnewbies.org/mailinglistguidelines

Also dig kernelnewbies.org  for more details.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20150114/cedbce04/attachment.html 

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
@ 2015-01-14  9:16 SAJID HOSSAIN
  2015-01-14 10:19 ` Help Anuz Pratap Singh Tomar
  0 siblings, 1 reply; 278+ messages in thread
From: SAJID HOSSAIN @ 2015-01-14  9:16 UTC (permalink / raw)
  To: kernelnewbies

Hi everyone,I am new to open source and really interested in contributing to Linux kernel, can someone please help me how to get started.P.S : I have good knowledge in computer architecture, operating systems and C/C++
-Sajid Hossain IRC : sajid5786 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20150114/c33851bf/attachment.html 

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2014-12-04 19:01 help m_del_buon
@ 2014-12-04 19:19 ` Arend van Spriel
  0 siblings, 0 replies; 278+ messages in thread
From: Arend van Spriel @ 2014-12-04 19:19 UTC (permalink / raw)
  To: m_del_buon; +Cc: linux-wireless

On 12/04/14 20:01, m_del_buon@libero.it wrote:
> can you help me with this problems? thx

Suspect that you are building newer kernel driver code against an older 
kernel. How did you populate /home/hp/rtl8192su-master/rtlwifi?

Regards,
Arend

> Sent from Libero Mobile
> ________________________________
>
> Il 04/12/2014, m_del_buon@libero.it ha scritto:
>
> hi I am an italian user of one realtek based device Bus 001 Device 005: ID 0df6:004b Sitecom Europe B.V. WL-349v3 Wireless Micro Adapter 150N X1 [Realtek RTL8192SU] on an ubuntu 14.04 64bit 3.13.0-40-generic kernel and I received following error
> make
> make -C /lib/modules/3.13.0-40-generic/build M=/home/hp/rtl8192su-master/rtlwifi CONFIG_RTL_CARDS=y CONFIG_RTLWIFI=m CONFIG_RTLWIFI_DEBUG=y CONFIG_RTLWIFI_DEBUGFS=y CONFIG_RTLWIFI_USB=m CONFIG_RTLWIFI_PCI=m CONFIG_RTL8192SU=m CONFIG_RTL8192SE=m CONFIG_RTL8192S_COMMON=m CONFIG_RTL8192CU=n CONFIG_RTL8192DE=n CONFIG_RTL8192CE=n CONFIG_RTL8192C_COMMON=n CONFIG_RTL8723AE=n CONFIG_RTL8188EE=n  EXTRA_CFLAGS="-DDEBUG -DCONFIG_RTLWIFI_DEBUGFS=m -w"
> make[1]: ingresso nella directory "/usr/src/linux-headers-3.13.0-40-generic"
>    CC [M]  /home/hp/rtl8192su-master/rtlwifi/regd.o
> In file included from include/net/cfg80211.h:23:0,
>                   from include/net/mac80211.h:21,
>                   from /home/hp/rtl8192su-master/rtlwifi/wifi.h:41,
>                   from /home/hp/rtl8192su-master/rtlwifi/regd.c:30:
> /home/hp/rtl8192su-master/rtlwifi/regd.c:62:4: error: ‘NL80211_RRF_NO_IR’ undeclared here (not in a function)
>      NL80211_RRF_NO_IR)
>      ^
> include/net/regulatory.h:128:11: note: in definition of macro ‘REG_RULE’
>    .flags = reg_flags,    \
>             ^
> /home/hp/rtl8192su-master/rtlwifi/regd.c:99:6: note: in expansion of macro ‘RTL819x_2GHZ_CH12_13’
>        RTL819x_2GHZ_CH12_13,
>        ^
> /home/hp/rtl8192su-master/rtlwifi/regd.c: In function ‘_rtl_reg_apply_beaconing_flags’:
> /home/hp/rtl8192su-master/rtlwifi/regd.c:186:20: error: ‘IEEE80211_CHAN_NO_IR’ undeclared (first use in this function)
>        ch->flags&= ~IEEE80211_CHAN_NO_IR;
>                      ^
> /home/hp/rtl8192su-master/rtlwifi/regd.c:186:20: note: each undeclared identifier is reported only once for each function it appears in
> /home/hp/rtl8192su-master/rtlwifi/regd.c: In function ‘_rtl_reg_apply_active_scan_flags’:
> /home/hp/rtl8192su-master/rtlwifi/regd.c:214:19: error: ‘IEEE80211_CHAN_NO_IR’ undeclared (first use in this function)
>     if (ch->flags&  IEEE80211_CHAN_NO_IR)
>                     ^
> /home/hp/rtl8192su-master/rtlwifi/regd.c: In function ‘_rtl_reg_apply_radar_flags’:
> /home/hp/rtl8192su-master/rtlwifi/regd.c:279:10: error: ‘IEEE80211_CHAN_NO_IR’ undeclared (first use in this function)
>            IEEE80211_CHAN_NO_IR;
>            ^
> /home/hp/rtl8192su-master/rtlwifi/regd.c: In function ‘_rtl_regd_init_wiphy’:
> /home/hp/rtl8192su-master/rtlwifi/regd.c:348:7: error: ‘struct wiphy’ has no member named ‘regulatory_flags’
>    wiphy->regulatory_flags |= REGULATORY_CUSTOM_REG;
>         ^
> /home/hp/rtl8192su-master/rtlwifi/regd.c:348:29: error: ‘REGULATORY_CUSTOM_REG’ undeclared (first use in this function)
>    wiphy->regulatory_flags |= REGULATORY_CUSTOM_REG;
>                               ^
> /home/hp/rtl8192su-master/rtlwifi/regd.c:349:7: error: ‘struct wiphy’ has no member named ‘regulatory_flags’
>    wiphy->regulatory_flags&= ~REGULATORY_STRICT_REG;
>         ^
> /home/hp/rtl8192su-master/rtlwifi/regd.c:349:30: error: ‘REGULATORY_STRICT_REG’ undeclared (first use in this function)
>    wiphy->regulatory_flags&= ~REGULATORY_STRICT_REG;
>                                ^
> /home/hp/rtl8192su-master/rtlwifi/regd.c:350:7: error: ‘struct wiphy’ has no member named ‘regulatory_flags’
>    wiphy->regulatory_flags&= ~REGULATORY_DISABLE_BEACON_HINTS;
>         ^
> /home/hp/rtl8192su-master/rtlwifi/regd.c:350:30: error: ‘REGULATORY_DISABLE_BEACON_HINTS’ undeclared (first use in this function)
>    wiphy->regulatory_flags&= ~REGULATORY_DISABLE_BEACON_HINTS;
>                                ^
> make[2]: *** [/home/hp/rtl8192su-master/rtlwifi/regd.o] Errore 1
> make[1]: *** [_module_/home/hp/rtl8192su-master/rtlwifi] Errore 2
> make[1]: uscita dalla directory "/usr/src/linux-headers-3.13.0-40-generic"
> make: *** [all] Errore 2
> can you help me?
>
> Sent from Libero Mobile


^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2014-12-04 19:01 m_del_buon
  2014-12-04 19:19 ` help Arend van Spriel
  0 siblings, 1 reply; 278+ messages in thread
From: m_del_buon @ 2014-12-04 19:01 UTC (permalink / raw)
  To: linux-wireless

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

can you help me with this problems? thx

Sent from Libero Mobile
________________________________

Il 04/12/2014, m_del_buon@libero.it ha scritto:

hi I am an italian user of one realtek based device Bus 001 Device 005: ID 0df6:004b Sitecom Europe B.V. WL-349v3 Wireless Micro Adapter 150N X1 [Realtek RTL8192SU] on an ubuntu 14.04 64bit 3.13.0-40-generic kernel and I received following error
make
make -C /lib/modules/3.13.0-40-generic/build M=/home/hp/rtl8192su-master/rtlwifi CONFIG_RTL_CARDS=y CONFIG_RTLWIFI=m CONFIG_RTLWIFI_DEBUG=y CONFIG_RTLWIFI_DEBUGFS=y CONFIG_RTLWIFI_USB=m CONFIG_RTLWIFI_PCI=m CONFIG_RTL8192SU=m CONFIG_RTL8192SE=m CONFIG_RTL8192S_COMMON=m CONFIG_RTL8192CU=n CONFIG_RTL8192DE=n CONFIG_RTL8192CE=n CONFIG_RTL8192C_COMMON=n CONFIG_RTL8723AE=n CONFIG_RTL8188EE=n  EXTRA_CFLAGS="-DDEBUG -DCONFIG_RTLWIFI_DEBUGFS=m -w"
make[1]: ingresso nella directory "/usr/src/linux-headers-3.13.0-40-generic"
  CC [M]  /home/hp/rtl8192su-master/rtlwifi/regd.o
In file included from include/net/cfg80211.h:23:0,
                 from include/net/mac80211.h:21,
                 from /home/hp/rtl8192su-master/rtlwifi/wifi.h:41,
                 from /home/hp/rtl8192su-master/rtlwifi/regd.c:30:
/home/hp/rtl8192su-master/rtlwifi/regd.c:62:4: error: ‘NL80211_RRF_NO_IR’ undeclared here (not in a function)
    NL80211_RRF_NO_IR)
    ^
include/net/regulatory.h:128:11: note: in definition of macro ‘REG_RULE’
  .flags = reg_flags,    \
           ^
/home/hp/rtl8192su-master/rtlwifi/regd.c:99:6: note: in expansion of macro ‘RTL819x_2GHZ_CH12_13’
      RTL819x_2GHZ_CH12_13,
      ^
/home/hp/rtl8192su-master/rtlwifi/regd.c: In function ‘_rtl_reg_apply_beaconing_flags’:
/home/hp/rtl8192su-master/rtlwifi/regd.c:186:20: error: ‘IEEE80211_CHAN_NO_IR’ undeclared (first use in this function)
      ch->flags &= ~IEEE80211_CHAN_NO_IR;
                    ^
/home/hp/rtl8192su-master/rtlwifi/regd.c:186:20: note: each undeclared identifier is reported only once for each function it appears in
/home/hp/rtl8192su-master/rtlwifi/regd.c: In function ‘_rtl_reg_apply_active_scan_flags’:
/home/hp/rtl8192su-master/rtlwifi/regd.c:214:19: error: ‘IEEE80211_CHAN_NO_IR’ undeclared (first use in this function)
   if (ch->flags & IEEE80211_CHAN_NO_IR)
                   ^
/home/hp/rtl8192su-master/rtlwifi/regd.c: In function ‘_rtl_reg_apply_radar_flags’:
/home/hp/rtl8192su-master/rtlwifi/regd.c:279:10: error: ‘IEEE80211_CHAN_NO_IR’ undeclared (first use in this function)
          IEEE80211_CHAN_NO_IR;
          ^
/home/hp/rtl8192su-master/rtlwifi/regd.c: In function ‘_rtl_regd_init_wiphy’:
/home/hp/rtl8192su-master/rtlwifi/regd.c:348:7: error: ‘struct wiphy’ has no member named ‘regulatory_flags’
  wiphy->regulatory_flags |= REGULATORY_CUSTOM_REG;
       ^
/home/hp/rtl8192su-master/rtlwifi/regd.c:348:29: error: ‘REGULATORY_CUSTOM_REG’ undeclared (first use in this function)
  wiphy->regulatory_flags |= REGULATORY_CUSTOM_REG;
                             ^
/home/hp/rtl8192su-master/rtlwifi/regd.c:349:7: error: ‘struct wiphy’ has no member named ‘regulatory_flags’
  wiphy->regulatory_flags &= ~REGULATORY_STRICT_REG;
       ^
/home/hp/rtl8192su-master/rtlwifi/regd.c:349:30: error: ‘REGULATORY_STRICT_REG’ undeclared (first use in this function)
  wiphy->regulatory_flags &= ~REGULATORY_STRICT_REG;
                              ^
/home/hp/rtl8192su-master/rtlwifi/regd.c:350:7: error: ‘struct wiphy’ has no member named ‘regulatory_flags’
  wiphy->regulatory_flags &= ~REGULATORY_DISABLE_BEACON_HINTS;
       ^
/home/hp/rtl8192su-master/rtlwifi/regd.c:350:30: error: ‘REGULATORY_DISABLE_BEACON_HINTS’ undeclared (first use in this function)
  wiphy->regulatory_flags &= ~REGULATORY_DISABLE_BEACON_HINTS;
                              ^
make[2]: *** [/home/hp/rtl8192su-master/rtlwifi/regd.o] Errore 1
make[1]: *** [_module_/home/hp/rtl8192su-master/rtlwifi] Errore 2
make[1]: uscita dalla directory "/usr/src/linux-headers-3.13.0-40-generic"
make: *** [all] Errore 2
can you help me?

Sent from Libero Mobile

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2014-10-09 12:43 help Manuel Piroz
@ 2014-10-09 13:14 ` Burton, Ross
  0 siblings, 0 replies; 278+ messages in thread
From: Burton, Ross @ 2014-10-09 13:14 UTC (permalink / raw)
  To: Manuel Piroz; +Cc: bitbake-devel

On 9 October 2014 13:43, Manuel Piroz <succes.incorporated@gmail.com> wrote:
> // This is The beginning of the build
>
>
>
>
>
>
> // this is the END

There should be messages in that gap...  Luckily the entire log is
saved to disk, in tmp/log/cooker/[MACHINE]/[TIMESTAMP] so you can
re-run it and then read the full log. This should hopefully tell you
what the 1 warning and 2 errors were.

Ross


^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2014-10-09 12:43 Manuel Piroz
  2014-10-09 13:14 ` help Burton, Ross
  0 siblings, 1 reply; 278+ messages in thread
From: Manuel Piroz @ 2014-10-09 12:43 UTC (permalink / raw)
  To: bitbake-devel


[-- Attachment #1.1: Type: text/plain, Size: 1381 bytes --]

Hello All
I’m new to the community and i just started building
i have a bit of a problem trying to build an image i have searched the WWW for answers and no luck. I’m running the command 
“bitbake core-image-minimal” 

Loading cache: 100% |#######################################################################################################################| ETA:  00:00:00
Loaded 1222 entries from dependency cache.
NOTE: Resolving any missing task queue dependencies

Build Configuration:
BB_VERSION        = "1.22.0"
BUILD_SYS         = "x86_64-linux"
NATIVELSBSTRING   = "Fedora-20"
TARGET_SYS        = "i586-poky-linux"
MACHINE           = "qemux86"
DISTRO            = "poky"
DISTRO_VERSION    = "1.6.1"
TUNE_FEATURES     = "m32 i586"
TARGET_FPU        = ""
meta              
meta-yocto        
meta-yocto-bsp    = "daisy:7a12eda78555a78ad33c6e38c1ed2b29982b165f"

NOTE: Preparing runqueue
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
Currently 15 running tasks (624 of 1791):

// This is The beginning of the build






// this is the END
Summary: 1 task failed:
  virtual:native:/home/Yocto/Mano/poky/meta/recipes-core/ncurses/ncurses_5.9.bb, do_install
Summary: There was 1 WARNING message shown.
Summary: There were 2 ERROR messages shown, returning a non-zero exit code.
[UNITdaMERCENARY@YoctoBuild 4]$ 



[-- Attachment #1.2: Type: text/html, Size: 6814 bytes --]

[-- Attachment #2: Message signed with OpenPGP using GPGMail --]
[-- Type: application/pgp-signature, Size: 507 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2013-03-23  7:51 Help Arun Kv
@ 2013-03-25 10:54 ` George Dunlap
  0 siblings, 0 replies; 278+ messages in thread
From: George Dunlap @ 2013-03-25 10:54 UTC (permalink / raw)
  To: Arun Kv; +Cc: xen-devel

On Sat, Mar 23, 2013 at 7:51 AM, Arun Kv <me.kvarun@gmail.com> wrote:
> Hi,
>
> My question is how can i disable direct io in XCP, in XEN i can do it by
> editing "driver name" value to "file"
> How can i do this in XCP, please help.

You should ask this question on xen-users, and probably also on the
(badly-named) xen-api@lists.xen.org list, which is used by the XCP
developers.

 -Geoge

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
@ 2013-03-23  7:51 Arun Kv
  2013-03-25 10:54 ` Help George Dunlap
  0 siblings, 1 reply; 278+ messages in thread
From: Arun Kv @ 2013-03-23  7:51 UTC (permalink / raw)
  To: xen-devel


[-- Attachment #1.1: Type: text/plain, Size: 162 bytes --]

Hi,

My question is how can i disable direct io in XCP, in XEN i can do it by
editing "driver name" value to "file"
How can i do this in XCP, please help.


Arun

[-- Attachment #1.2: Type: text/html, Size: 204 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2013-01-23  9:59 Narendra Pal Singh
  0 siblings, 0 replies; 278+ messages in thread
From: Narendra Pal Singh @ 2013-01-23  9:59 UTC (permalink / raw)
  To: linux-perf-users

I want to check time taken  and  number of system calls made by each
function in my code  .My code is part of user as well as kernel space.
So i need time taken in both space. I am interested to know
performance in terms of CPU time and Disk IO .How should i go ? is
perf is right tool for same ?

-- 
Regards,
Narendra Pal

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
       [not found] <mailman.3.1347822001.6317.yocto@yoctoproject.org>
@ 2012-09-16 19:10 ` Jam1e Harr1s
  0 siblings, 0 replies; 278+ messages in thread
From: Jam1e Harr1s @ 2012-09-16 19:10 UTC (permalink / raw)
  To: yocto

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



unsubscribe

________________________________
 From: "yocto-request@yoctoproject.org" <yocto-request@yoctoproject.org>
To: yocto@yoctoproject.org 
Sent: Sunday, 16 September 2012, 20:00
Subject: yocto Digest, Vol 24, Issue 66
 
Send yocto mailing list submissions to
    yocto@yoctoproject.org

To subscribe or unsubscribe via the World Wide Web, visit
    https://lists.yoctoproject.org/listinfo/yocto
or, via email, send a message with subject or body 'help' to
    yocto-request@yoctoproject.org

You can reach the person managing the list at
    yocto-owner@yoctoproject.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of yocto digest..."


Today's Topics:

   1. Re: Dependency walk for busybox recipe (Khem Raj)
   2. Re: Forcing link order for autotools recipe [SOLVED] (Chris Tapp)
   3. Re: Dependency walk for busybox recipe (Elvis Dowson)
   4. Re: All kernel modules being built and shipped in
      images/modules-*.tgz (Elvis Dowson)
   5. Re: Dependency walk for busybox recipe (Paul Eggleton)


----------------------------------------------------------------------

Message: 1
Date: Sat, 15 Sep 2012 20:54:56 -0700
From: Khem Raj <raj.khem@gmail.com>
To: Elvis Dowson <elvis.dowson@gmail.com>
Cc: Yocto Discussion Mailing List <yocto@yoctoproject.org>
Subject: Re: [yocto] Dependency walk for busybox recipe
Message-ID:
    <CAMKF1sr9zgFJMrhBM_xdVPMM_zhnQCzjxYanub6O7NFG4w1Ohg@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8

On Sat, Sep 15, 2012 at 10:59 AM, Elvis Dowson <elvis.dowson@gmail.com> wrote:
>
>
> So I added busybox-1.19.4 recipe back into my poky master branch, and the resulting size of the busybox-1.19.4 /bin/busybox or /bin/sh executable is 604.2 kb.

make sure that .config of busybox has not changed even if you have
same version backported


------------------------------

Message: 2
Date: Sun, 16 Sep 2012 11:08:37 +0100
From: Chris Tapp <opensource@keylevel.com>
To: "yocto@yoctoproject.org Project" <yocto@yoctoproject.org>
Subject: Re: [yocto] Forcing link order for autotools recipe [SOLVED]
Message-ID: <B130E0AD-EF24-4774-9671-6EC9C8B03EDE@keylevel.com>
Content-Type: text/plain; charset=us-ascii

On 16 Sep 2012, at 00:59, Chris Tapp wrote:

> I've got a recipe that uses autotools. It builds ok under Poky, but if I try to build it on my host (e.g. when developing) then it fails to build with lots of 'symbol not found' link errors related to libs that are on the system and which are in the gcc lib search path.
> 
> I've finally tracked this down to link order. The final command is of the form:
> 
> g++ -lGL -lcurl -o binary a.o b.o
> 
> If I change this to:
> 
> g++ -o binary a.o b.o -lGL -lcurl
> 
> then it builds ok.
> 
> Stranger still is the original form works fine on another system (older Ubuntu). The ld versions are different (2.21.53 on the one that fails, 2.20.1 on the one that works).
> 
> Can I get autotools to always link the libraries last?


Turns out there was a problem with one of my makefiles - it was using LDFLAGS to add the libs when it should have used LDADD (which puts them at the end of the command line).

That'll teach me to blindly copy from else where ;-) Strange it's worked up till now...

Chris Tapp

opensource@keylevel.com
www.keylevel.com





------------------------------

Message: 3
Date: Sun, 16 Sep 2012 20:09:10 +0400
From: Elvis Dowson <elvis.dowson@gmail.com>
To: Khem Raj <raj.khem@gmail.com>
Cc: Yocto Discussion Mailing List <yocto@yoctoproject.org>
Subject: Re: [yocto] Dependency walk for busybox recipe
Message-ID: <5055F9A6.20709@gmail.com>
Content-Type: text/plain; charset="utf-8"; Format="flowed"

On 09/16/2012 07:54 AM, Khem Raj wrote:
> On Sat, Sep 15, 2012 at 10:59 AM, Elvis Dowson <elvis.dowson@gmail.com> wrote:
>> So I added busybox-1.19.4 recipe back into my poky master branch, and the resulting size of the busybox-1.19.4 /bin/busybox or /bin/sh executable is 604.2 kb.
> make sure that .config of busybox has not changed even if you have
> same version backported
I've made sure that the defconfig files used in the recipe are 
identical. The only addition that I notice now, is that the recent 
rework done to task-core-boot, resulting in it being renamed as 
packagegroup-core-boot.bb adds the following extra line:

${@base_contains("MACHINE_FEATURES", "rtc", "busybox-hwclock", "", d)} \

My virtex5.conf machine features entry does not specify an rtc,

MACHINE_FEATURES = "kernel26 apm ext2 ext3 vfat ethernet keyboard screen 
serial"

yet the current poky master attempts to pull it in:

NOTE: Resolving any missing task queue dependencies
ERROR: Nothing RPROVIDES 'busybox-hwclock' (but 
/tool/yocto/poky/meta/recipes-core/packagegroups/packagegroup-core-boot.bb 
RDEPENDS on or otherwise requires it)
NOTE: Runtime target 'busybox-hwclock' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['busybox-hwclock']
NOTE: Runtime target 'packagegroup-core-boot' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['packagegroup-core-boot', 
'busybox-hwclock']
ERROR: Required build target 'core-image-minimal' has no buildable 
providers.
Missing or unbuildable dependency chain was: ['core-image-minimal', 
'packagegroup-core-boot', 'busybox-hwclock']

Summary: There were 2 ERROR messages shown, returning a non-zero exit code.

Is this a bug? Is the rtc being added from somewhere else? Should this 
be happening?

Best regards,

Elvis Dowson
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20120916/7a6c7236/attachment-0001.html>

------------------------------

Message: 4
Date: Sun, 16 Sep 2012 20:49:38 +0400
From: Elvis Dowson <elvis.dowson@gmail.com>
To: Yocto Discussion Mailing List <yocto@yoctoproject.org>
Subject: Re: [yocto] All kernel modules being built and shipped in
    images/modules-*.tgz
Message-ID: <A158BAD0-6C2D-4724-B13A-AAB54992904C@gmail.com>
Content-Type: text/plain; charset=us-ascii

Hi,

On Sep 15, 2012, at 7:29 AM, Elvis Dowson wrote:

> I just noticed that with the recent poky master updates, my images/modules-3.3.1-r00-virtex5.tgz file has grown from 33.1 MB to 668.5MB. When I looked in the package, I saw that the kernel/drivers folder inside that package was nearly 1.5GB uncompressed!!
> 
> My kenel defconfig was tuned so that I only used a bare minimum of kernel modules, and nearly all except for 2 groups (one related to filesystem and the other for networking) was built as a module. The rest were all built into the kernel.
> 
> Isn't this a regression or an error? 
> 
> Also my build time has gone up from 40 minutes to 67 minutes, probably as a result of the increased number of kernel modules being built and shipped.

Is there any way to prevent all the kernel modules from being built, when 99% of my kernel defconfig settings are set to 'y' and not to build any modules?

Elvis

------------------------------

Message: 5
Date: Sun, 16 Sep 2012 19:31:15 +0100
From: Paul Eggleton <paul.eggleton@linux.intel.com>
To: Elvis Dowson <elvis.dowson@gmail.com>
Cc: yocto@yoctoproject.org
Subject: Re: [yocto] Dependency walk for busybox recipe
Message-ID: <2099128.G0xV8XsdZC@helios>
Content-Type: text/plain; charset="us-ascii"

On Sunday 16 September 2012 20:09:10 Elvis Dowson wrote:
> On 09/16/2012 07:54 AM, Khem Raj wrote:
> > On Sat, Sep 15, 2012 at 10:59 AM, Elvis Dowson <elvis.dowson@gmail.com> 
wrote:
> >> So I added busybox-1.19.4 recipe back into my poky master branch, and the
> >> resulting size of the busybox-1.19.4 /bin/busybox or /bin/sh executable
> >> is 604.2 kb.> 
> > make sure that .config of busybox has not changed even if you have
> > same version backported
> 
> I've made sure that the defconfig files used in the recipe are
> identical. The only addition that I notice now, is that the recent
> rework done to task-core-boot, resulting in it being renamed as
> packagegroup-core-boot.bb adds the following extra line:
> 
> ${@base_contains("MACHINE_FEATURES", "rtc", "busybox-hwclock", "", d)} \
> 
> My virtex5.conf machine features entry does not specify an rtc,
> 
> MACHINE_FEATURES = "kernel26 apm ext2 ext3 vfat ethernet keyboard screen
> serial"
> 
> yet the current poky master attempts to pull it in:
> 
> NOTE: Resolving any missing task queue dependencies
> ERROR: Nothing RPROVIDES 'busybox-hwclock' (but
> /tool/yocto/poky/meta/recipes-core/packagegroups/packagegroup-core-boot.bb
> RDEPENDS on or otherwise requires it)
> NOTE: Runtime target 'busybox-hwclock' is unbuildable, removing...
> Missing or unbuildable dependency chain was: ['busybox-hwclock']
> NOTE: Runtime target 'packagegroup-core-boot' is unbuildable, removing...
> Missing or unbuildable dependency chain was: ['packagegroup-core-boot',
> 'busybox-hwclock']
> ERROR: Required build target 'core-image-minimal' has no buildable
> providers.
> Missing or unbuildable dependency chain was: ['core-image-minimal',
> 'packagegroup-core-boot', 'busybox-hwclock']
> 
> Summary: There were 2 ERROR messages shown, returning a non-zero exit code.
> 
> Is this a bug? Is the rtc being added from somewhere else? Should this
> be happening?

It's not a bug, this is meant to happen. This is a result of 
MACHINE_FEATURES_BACKFILL, which is intended to ensure that we can introduce 
new items to MACHINE_FEATURES controlling existing functionality without 
breaking existing machine configurations by disabling the existing 
functionality because the configuration doesn't include it. (In older versions 
of busybox the hwclock feature was on by default - an hwclock item was added 
at the MACHINE_FEATURES level to be able to control it).

To fix this, just add hwclock to MACHINE_FEATURES_BACKFILL_CONSIDERED in your 
machine configuration.

Cheers,
Paul


-- 

Paul Eggleton
Intel Open Source Technology Centre


------------------------------

_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto


End of yocto Digest, Vol 24, Issue 66
*************************************

[-- Attachment #2: Type: text/html, Size: 14756 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2012-08-21  1:26 help du81692468
@ 2012-08-23 19:18 ` Dexter Filmore
  0 siblings, 0 replies; 278+ messages in thread
From: Dexter Filmore @ 2012-08-23 19:18 UTC (permalink / raw)
  To: intel-gfx


[-- Attachment #1.1: Type: text/plain, Size: 866 bytes --]

Am Tuesday 21 August 2012 03:26:44 schrieb du81692468:
> Hello, I have a question:
> System Environment: fedora 14
> Graphics card: intel integrated graphics + NVIDIA
> When I installed the xf86-video-intel-2.17.0 driver, I can not set the
> screen resolution of 800 * 600, when I downgraded to
> xf86-video-intel-2.13.0 when you can set the screen resolution but can not
> set the host screen to the main screen, start when the attachment:
> xf86-video-intel-2.13.0 driver the xwindows error screenshot. Can you help
> me?
>
>
>
> du81692468

Fedora 14... 17 is out, is upgrading an option?

-- 
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d--(+)@ s-:+ a C++++ UL++ P+>++ L+++>++++ E-- W++ N o? K-
w--(---) !O M+ V- PS+ PE Y++ PGP t++(---)@ 5 X+(++) R+(++) tv--(+)@ 
b++(+++) DI+++ D- G++ e* h>++ r* y?
------END GEEK CODE BLOCK------

[-- Attachment #1.2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

[-- Attachment #2: Type: text/plain, Size: 159 bytes --]

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2012-08-21  1:26 du81692468
  2012-08-23 19:18 ` help Dexter Filmore
  0 siblings, 1 reply; 278+ messages in thread
From: du81692468 @ 2012-08-21  1:26 UTC (permalink / raw)
  To: Intel-gfx-request


[-- Attachment #1.1: Type: text/plain, Size: 481 bytes --]






Hello, I have a question:
System Environment: fedora 14
Graphics card: intel integrated graphics + NVIDIA
When I installed the xf86-video-intel-2.17.0 driver, I can not set the screen resolution of 800 * 600, when I downgraded to xf86-video-intel-2.13.0 when you can set the screen resolution but can not set the host screen to the main screen, start when the attachment: xf86-video-intel-2.13.0 driver the xwindows error screenshot. Can you help me?



du81692468

[-- Attachment #1.2: Type: text/html, Size: 2937 bytes --]

[-- Attachment #2: uname.jpg --]
[-- Type: application/octet-stream, Size: 58934 bytes --]

[-- Attachment #3: Type: text/plain, Size: 159 bytes --]

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2012-06-14 16:30 chen.chenchacha
  0 siblings, 0 replies; 278+ messages in thread
From: chen.chenchacha @ 2012-06-14 16:30 UTC (permalink / raw)
  To: linux-kernel

help

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2011-11-18  5:12 shepherd Lazy
  0 siblings, 0 replies; 278+ messages in thread
From: shepherd Lazy @ 2011-11-18  5:12 UTC (permalink / raw)
  To: linux-kernel

help

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2011-10-29 20:37 Kai Moonbourn
  0 siblings, 0 replies; 278+ messages in thread
From: Kai Moonbourn @ 2011-10-29 20:37 UTC (permalink / raw)
  To: linux-btrfs



^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2011-10-28  4:15 Help Pankaj Kumar Biswas
@ 2011-10-28  8:47 ` Ian Campbell
  0 siblings, 0 replies; 278+ messages in thread
From: Ian Campbell @ 2011-10-28  8:47 UTC (permalink / raw)
  To: Pankaj Kumar Biswas; +Cc: xen-devel

On Fri, 2011-10-28 at 05:15 +0100, Pankaj Kumar Biswas wrote:
> I want to know how the paging works in xen and what the shadow paging
> is?

I'm sorry but I'm afraid that no one here has time to school you from
first principals on such open ended topics, you are going to need to do
some leg work first yourself. There are various papers available on
xen.org for example and googling the subject matter should be of some
help. Once you are able to ask specific questions I suggest you reread
http://wiki.xen.org/xenwiki/AskingXenDevelQuestions post here again.

Thanks,
Ian.

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
@ 2011-10-28  4:15 Pankaj Kumar Biswas
  2011-10-28  8:47 ` Help Ian Campbell
  0 siblings, 1 reply; 278+ messages in thread
From: Pankaj Kumar Biswas @ 2011-10-28  4:15 UTC (permalink / raw)
  To: xen-devel


[-- Attachment #1.1: Type: text/plain, Size: 256 bytes --]

Hi team,

I want to know how the paging works in xen and what the shadow paging is?

Thanks & Regards,
PANKAJ KUMAR BISWAS

Software Maintenance Engineer | XenServer India | Citrix Systems Inc.
Ext. 41225 | Email:  pankaj.kumarbiswas@citrix.com


[-- Attachment #1.2: Type: text/html, Size: 2470 bytes --]

[-- Attachment #2: Type: text/plain, Size: 138 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2011-10-17 23:50 Mario Torres
  0 siblings, 0 replies; 278+ messages in thread
From: Mario Torres @ 2011-10-17 23:50 UTC (permalink / raw)
  To: linux-media, majordomo

Can I say a word to you guys?

Cool

I got one AVerMedia M792 PCIe Combo (OEM) on Ubuntu 11.10 and i wonder 
if we can work it out, it is a pci-e and yes it is on the unsupported 
list. but if we can work it out lets do it.

when i do a lspci -vv
it gives me this


03:00.0 Multimedia video controller: Conexant Systems, Inc. CX23887/8 
PCIe Broadcast Audio and Video Decoder with 3D Comb (rev 0f)
     Subsystem: Avermedia Technologies Inc Device df39
     Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
Stepping- SERR- FastB2B- DisINTx-
     Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- 
<TAbort- <MAbort- >SERR- <PERR- INTx-
     Latency: 0, Cache Line Size: 32 bytes
     Interrupt: pin A routed to IRQ 17
     Region 0: Memory at f9e00000 (64-bit, non-prefetchable) [size=2M]
     Capabilities: <access denied>
     Kernel driver in use: cx23885
     Kernel modules: cx23885

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2011-10-14 16:22 Mario Torres
  0 siblings, 0 replies; 278+ messages in thread
From: Mario Torres @ 2011-10-14 16:22 UTC (permalink / raw)
  To: linux-media

help

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2011-10-14 16:21 Mario Torres
  0 siblings, 0 replies; 278+ messages in thread
From: Mario Torres @ 2011-10-14 16:21 UTC (permalink / raw)
  To: linux-media



^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2011-07-29  3:12 ` help Pavel Roskin
@ 2011-07-29 16:32   ` Pavel Roskin
  0 siblings, 0 replies; 278+ messages in thread
From: Pavel Roskin @ 2011-07-29 16:32 UTC (permalink / raw)
  To: Martin Partridge; +Cc: linux-wireless

On 07/28/2011 11:12 PM, Pavel Roskin wrote:

> You only need to check if the modules are present in the kernel you are
> using. You can do that by running "modprobe p54".

Sorry, it should be "modproble p54pci" for PCI cards and "modprobe 
p54usb" for USB devices.  I checked Fuduntu, and it has both drivers. 
It doesn't have the firmware, but I guess you have no problems with that 
part of the instructions.

-- 
Regards,
Pavel Roskin

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2011-07-28 23:33 help Martin Partridge
  2011-07-28 23:47 ` help Christian Lamparter
@ 2011-07-29  3:12 ` Pavel Roskin
  2011-07-29 16:32   ` help Pavel Roskin
  1 sibling, 1 reply; 278+ messages in thread
From: Pavel Roskin @ 2011-07-29  3:12 UTC (permalink / raw)
  To: Martin Partridge; +Cc: linux-wireless

Hello!

Please use meaningful subjects for the list posts.

On 07/28/2011 07:33 PM, Martin Partridge wrote:
>
> I don't understand the last 2 steps, i'm running fedora (ok i lie its
> Fuduntu, but to all intents and purposes its fedora) Kernel version:
> 2.6.39.3-1.fc14.i686

Please always give information about the location of the documentation 
if you have any problems with it.

> Enabling p54
>
> To enable p54, you must first enable mac80211:

I used Google and found this text on the linux-wireless wiki:
http://linuxwireless.org/en/users/Drivers/p54

I rephrased the text to make it more clear that it only applied to 
configuring the kernel.

Since you are using a precompiled kernel, you don't have that option.

> I have a kernel config
> file in /etc/sysconfig but its a bit bare, as shown below:

That's something totally different.  The wiki talks about compile-time 
configuration.

> How do i enable p54 and mac80211, i'm not sure and its bloody annoying.

You only need to check if the modules are present in the kernel you are 
using.  You can do that by running "modprobe p54".

-- 
Regards,
Pavel Roskin

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2011-07-28 23:33 help Martin Partridge
@ 2011-07-28 23:47 ` Christian Lamparter
  2011-07-29  3:12 ` help Pavel Roskin
  1 sibling, 0 replies; 278+ messages in thread
From: Christian Lamparter @ 2011-07-28 23:47 UTC (permalink / raw)
  To: Martin Partridge; +Cc: linux-wireless

On Friday, July 29, 2011 01:33:13 AM Martin Partridge wrote:
> I don't understand the last 2 steps, i'm running fedora (ok i lie its  
> Fuduntu, but to all intents and purposes its fedora) Kernel version:  
> 2.6.39.3-1.fc14.i686
recent enough. 

> i'm using a WG511v2 PCMCIA card, i've downloaded the correct firmware,  
> renamed it and modprobed everything as instructed, the bit i'm having  
> trouble with is this bit:
> 
> Enabling p54
> 
> To enable p54, you must first enable mac80211:
> 
> Networking Support --->
>    Wireless  --->
>      <M> cfg80211 - wireless configuration API
>      <M> Generic IEEE 802.11 Networking Stack (mac80211)
> 
> You can then enable p54 in the kernel configuration under
> 
> Device Drivers  --->
>    [*] Network device support  --->
>          Wireless LAN --->
>            [*] Wireless LAN (IEEE 802.11)
>            <M>   Softmac Prism54 support
>            <M>     Prism54 USB support
>            <M>     Prism54 PCI support
>            <M>     Prism54 SPI (stlc45xx) support
> 
> where do i type this, or what does it mean? I i don't have a 'networking  
> support' menu and it's not a program, where do i find this? is it a conf  
> file? I'm no stranger to linux but this is perplexing, the card works fine  
> on windows, but i can't get it work now. I have a kernel config file in  
> /etc/sysconfig but its a bit bare, as shown below:
> 
> # UPDATEDEFAULT specifies if new-kernel-pkg should make
> # new kernels the default
> UPDATEDEFAULT=yes
> 
> # DEFAULTKERNEL specifies the default kernel package type
> DEFAULTKERNEL=kernel
> 
> That's the whole thing.
> 
> How do i enable p54 and mac80211, i'm not sure and its bloody annoying.
Ah you see, you don't need to do that. This step is only necessary if you
make your own kernel [from scratch] and you haven't enabled p54 yet. But
since your using fedora's default 2.6.39.3-1.fc14.i686 kernel, I hope they
have taken care of it and provided you with a fitting p54common and p54pci
modules.

In fact, the device should show up right away soon as you insert the pcmcia
card into the slot. Check networkmanager/wicd/ifconfig -a/iw list for any
new devices. If it doesn't show up, you might want to post your `dmesg`,
[releavant p54 extract] syslog right here. I also have a WG511v2 so it should
work pretty much out of the box.

Regards,
	Chr

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2011-07-28 23:33 Martin Partridge
  2011-07-28 23:47 ` help Christian Lamparter
  2011-07-29  3:12 ` help Pavel Roskin
  0 siblings, 2 replies; 278+ messages in thread
From: Martin Partridge @ 2011-07-28 23:33 UTC (permalink / raw)
  To: linux-wireless

Hello,

I don't understand the last 2 steps, i'm running fedora (ok i lie its  
Fuduntu, but to all intents and purposes its fedora) Kernel version:  
2.6.39.3-1.fc14.i686
i'm using a WG511v2 PCMCIA card, i've downloaded the correct firmware,  
renamed it and modprobed everything as instructed, the bit i'm having  
trouble with is this bit:

Enabling p54

To enable p54, you must first enable mac80211:

Networking Support --->
   Wireless  --->
     <M> cfg80211 - wireless configuration API
     <M> Generic IEEE 802.11 Networking Stack (mac80211)

You can then enable p54 in the kernel configuration under

Device Drivers  --->
   [*] Network device support  --->
         Wireless LAN --->
           [*] Wireless LAN (IEEE 802.11)
           <M>   Softmac Prism54 support
           <M>     Prism54 USB support
           <M>     Prism54 PCI support
           <M>     Prism54 SPI (stlc45xx) support

where do i type this, or what does it mean? I i don't have a 'networking  
support' menu and it's not a program, where do i find this? is it a conf  
file? I'm no stranger to linux but this is perplexing, the card works fine  
on windows, but i can't get it work now. I have a kernel config file in  
/etc/sysconfig but its a bit bare, as shown below:

# UPDATEDEFAULT specifies if new-kernel-pkg should make
# new kernels the default
UPDATEDEFAULT=yes

# DEFAULTKERNEL specifies the default kernel package type
DEFAULTKERNEL=kernel

That's the whole thing.

How do i enable p54 and mac80211, i'm not sure and its bloody annoying.

regards

Martin Partridge

-- 
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2011-04-22  8:49 wolfu
  0 siblings, 0 replies; 278+ messages in thread
From: wolfu @ 2011-04-22  8:49 UTC (permalink / raw)
  To: linux-omap



^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2010-12-21  7:58 andy xu
  0 siblings, 0 replies; 278+ messages in thread
From: andy xu @ 2010-12-21  7:58 UTC (permalink / raw)
  To: linux-kernel




      


^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2010-09-20 12:06 help Marcos
@ 2010-09-20 12:16 ` Oskar Berggren
  0 siblings, 0 replies; 278+ messages in thread
From: Oskar Berggren @ 2010-09-20 12:16 UTC (permalink / raw)
  To: Marcos; +Cc: netfilter

Are you kidnapped? Where should we send the police?

/Oskar


2010/9/20 Marcos <mczueira@yahoo.com.br>:
> help
>
>
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe netfilter" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2010-09-20 12:06 Marcos
  2010-09-20 12:16 ` help Oskar Berggren
  0 siblings, 1 reply; 278+ messages in thread
From: Marcos @ 2010-09-20 12:06 UTC (permalink / raw)
  To: netfilter

help



      

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2010-09-20 12:06 Marcos
  0 siblings, 0 replies; 278+ messages in thread
From: Marcos @ 2010-09-20 12:06 UTC (permalink / raw)
  To: netfilter-devel

help



      

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2010-05-29  2:48 code.perfect
  0 siblings, 0 replies; 278+ messages in thread
From: code.perfect @ 2010-05-29  2:48 UTC (permalink / raw)
  To: linux-kernel

Hi linux-kernel@vger.kernel.org, 

  

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2010-05-28  9:06 code.perfect
  0 siblings, 0 replies; 278+ messages in thread
From: code.perfect @ 2010-05-28  9:06 UTC (permalink / raw)
  To: linux-kernel



^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
@ 2010-05-17 17:00 ` Sgt. Ken Holland
  0 siblings, 0 replies; 278+ messages in thread
From: Sgt. Ken Holland @ 2010-05-17 17:00 UTC (permalink / raw)


Permit me to approach you in this manner.I am Sgt. Ken Holland of the US Marine in Ba'qubah,Iraq. We got the sum of $15,500,000.00 we made from some Crude Oil Money deal that i will want you to help us receive. Since we are working here on Official capacity we cannot keep this funds hence my contacting you. If you are interested, do get back to me so that i can give you further details.

Sgt. Ken Holland

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
@ 2010-05-17 17:00 ` Sgt. Ken Holland
  0 siblings, 0 replies; 278+ messages in thread
From: Sgt. Ken Holland @ 2010-05-17 17:00 UTC (permalink / raw)


Permit me to approach you in this manner.I am Sgt. Ken Holland of the US Marine in Ba'qubah,Iraq. We got the sum of $15,500,000.00 we made from some Crude Oil Money deal that i will want you to help us receive. Since we are working here on Official capacity we cannot keep this funds hence my contacting you. If you are interested, do get back to me so that i can give you further details.

Sgt. Ken Holland

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
@ 2010-05-17 17:00 Sgt. Ken Holland
  0 siblings, 0 replies; 278+ messages in thread
From: Sgt. Ken Holland @ 2010-05-17 17:00 UTC (permalink / raw)


Permit me to approach you in this manner.I am Sgt. Ken Holland of the US Marine in Ba'qubah,Iraq. We got the sum of $15,500,000.00 we made from some Crude Oil Money deal that i will want you to help us receive. Since we are working here on Official capacity we cannot keep this funds hence my contacting you. If you are interested, do get back to me so that i can give you further details.

Sgt. Ken Holland

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2009-10-24  5:15 Ingo Krabbe
  0 siblings, 0 replies; 278+ messages in thread
From: Ingo Krabbe @ 2009-10-24  5:15 UTC (permalink / raw)
  To: git

help
-- 
i don't do signatures

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2009-10-19 16:07 Jens-U. Mozdzen
  0 siblings, 0 replies; 278+ messages in thread
From: Jens-U. Mozdzen @ 2009-10-19 16:07 UTC (permalink / raw)
  To: linux-nfs


-- 
Jens-U. Mozdzen				voice	: +49-40-559 51 75
NDE Netzdesign und -entwicklung	AG	fax	: +49-40-559 51 77
Postfach 61 03 15			mobile	: +49-179-4 98 21 98
D-22423 Hamburg				e-mail	: jmozdzen-9fbXLY7Yocc@public.gmane.org

        Vorsitzende des Aufsichtsrates: Angelika Mozdzen
          Sitz und Registergericht: Hamburg, HRB 90934
                  Vorstand: Jens-U. Mozdzen
                   USt-IdNr. DE 814 013 983


^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2009-10-01 13:22 Jie Cai
  0 siblings, 0 replies; 278+ messages in thread
From: Jie Cai @ 2009-10-01 13:22 UTC (permalink / raw)
  To: linux-rdma-u79uwXL29TY76Z2rM5mHXA

help
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2009-10-01 13:16 Jie Cai
  0 siblings, 0 replies; 278+ messages in thread
From: Jie Cai @ 2009-10-01 13:16 UTC (permalink / raw)
  To: linux-rdma-u79uwXL29TY76Z2rM5mHXA


--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
       [not found]     ` <200909230133.28689.rjw@sisk.pl>
@ 2009-09-23 16:43       ` Pavel Machek
  0 siblings, 0 replies; 278+ messages in thread
From: Pavel Machek @ 2009-09-23 16:43 UTC (permalink / raw)
  To: Rafael J. Wysocki; +Cc: suspend-devel List, kix, pm list, stefan.seyfried

Hi!

> > > > Message body follows:
> > > > 
> > > > I would like to help in the project.
> > > > 
> > > > - updating the database.
> > > > 
> > > > Have you seen the patch I sent?
> > > 
> > > Yes, sorry for the lack of response, but I didn't really have the time to
> > > review the patch.
> > > 
> > > That said, I don't think we'd like to move the whitelist to a separate file.
> > > Rather than that, we've been considering removing it altogether.
> > > 
> > > Still, if you want to maintain the whitelist in its current form, I think
> > > you could do that.
> > 
> > Yes, maintainer for the whitelist would be very welcome.
> > 
> > Now... whitelist inside the binary is very welcome for init=/bin/bash,
> > etc; OTOH if the .c file is compiled from .txt description... that's
> > probably acceptable. Also it might make sense to load external
> > whitelist _in addition_ to the internal one, so people can quickly
> > experiment with whitelist entries...
> 
> If you're still willing to be a whitelist maintainer, please set up a git
> repository from which I can pull the whitelist updates.

Yes, that would be great.

> If you'd like to move the whitelist to a separate file, please do so.  You are
> free to use whatever format you think is suitable, although it would be nice
> if the whitelist file could be easily updated by users.

Ack.
										Pavel

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
       [not found]   ` <20090822073516.GD2108@elf.ucw.cz>
@ 2009-09-22 23:33     ` Rafael J. Wysocki
       [not found]     ` <200909230133.28689.rjw@sisk.pl>
  1 sibling, 0 replies; 278+ messages in thread
From: Rafael J. Wysocki @ 2009-09-22 23:33 UTC (permalink / raw)
  To: kix; +Cc: suspend-devel List, pm list, stefan.seyfried

Hi kix,

On Saturday 22 August 2009, Pavel Machek wrote:
> Hi!
> 
> > > Message body follows:
> > > 
> > > I would like to help in the project.
> > > 
> > > - updating the database.
> > > 
> > > Have you seen the patch I sent?
> > 
> > Yes, sorry for the lack of response, but I didn't really have the time to
> > review the patch.
> > 
> > That said, I don't think we'd like to move the whitelist to a separate file.
> > Rather than that, we've been considering removing it altogether.
> > 
> > Still, if you want to maintain the whitelist in its current form, I think
> > you could do that.
> 
> Yes, maintainer for the whitelist would be very welcome.
> 
> Now... whitelist inside the binary is very welcome for init=/bin/bash,
> etc; OTOH if the .c file is compiled from .txt description... that's
> probably acceptable. Also it might make sense to load external
> whitelist _in addition_ to the internal one, so people can quickly
> experiment with whitelist entries...

If you're still willing to be a whitelist maintainer, please set up a git
repository from which I can pull the whitelist updates.

If you'd like to move the whitelist to a separate file, please do so.  You are
free to use whatever format you think is suitable, although it would be nice
if the whitelist file could be easily updated by users.

Best,
Rafael

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2009-09-18 11:19 Help Lorenzo Brito Morales
@ 2009-09-18 13:18 ` Iain Hibbert
  0 siblings, 0 replies; 278+ messages in thread
From: Iain Hibbert @ 2009-09-18 13:18 UTC (permalink / raw)
  To: Lorenzo Brito Morales; +Cc: linux-bluetooth

On Fri, 18 Sep 2009, Lorenzo Brito Morales wrote:

> Hi, im a beggineer in bluez and also in programming stuff, i have read
> a coupble of things about bluez and programming,  what i want to do is
> a progran that send files to the phone is near by,,im trying to get
> work these code, its compile, and conect to the phone , but in the
> phone ask for a number security, ahta later i have to type in the
> computer...... how can i send a file whitout asking a number? just
> asking in the phone about aceptting the file

Well, in this case the phone requires authentication to connect to the
service on RFCOMM channel #1 so you are out of luck unless you can provide
the same PIN at both ends (or other pairing)

You need to investiage "OBEX Object Push". Sometimes you can send a text
file without authentication, but the person who owns the phone will
usually be required to authorise the connection (ie a message will appear,
asking if they wish to receive the file and they will need to approve)

It is a long way to do it yourself, look for "obexd" at www.bluez.org

iain



^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
@ 2009-09-18 11:19 Lorenzo Brito Morales
  2009-09-18 13:18 ` Help Iain Hibbert
  0 siblings, 1 reply; 278+ messages in thread
From: Lorenzo Brito Morales @ 2009-09-18 11:19 UTC (permalink / raw)
  To: linux-bluetooth

Hi, im a beggineer in bluez and also in programming stuff, i have read
a coupble of things about bluez and programming,  what i want to do is
a progran that send files to the phone is near by,,im trying to get
work these code, its compile, and conect to the phone , but in the
phone ask for a number security, ahta later i have to type in the
computer...... how can i send a file whitout asking a number? just
asking in the phone about aceptting the file
#include <stdio.h>
#include <unistd.h>
#include <sys/socket.h>
#include <bluetooth/bluetooth.h>
#include <bluetooth/rfcomm.h>

int main(int argc, char **argv)
{
    struct sockaddr_rc addr = { 0 };
    int s, status;
    char dest[18] = "00:23:F1:CC:BF:10";

    // allocate a socket
    s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);

    // set the connection parameters (who to connect to)
    addr.rc_family = AF_BLUETOOTH;
    addr.rc_channel = 1;
    str2ba( dest, &addr.rc_bdaddr );

    // connect to server
    status = connect(s, (struct sockaddr *)&addr, sizeof(addr));

    // send a message
    if( 0 == status ) {
        status = send(s, "hello!", 6, 0);
    }

    if( status < 0 ) perror("uh oh");

    close(s);
    return 0;
}

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
@ 2009-09-10 13:57 Dante Durham
  0 siblings, 0 replies; 278+ messages in thread
From: Dante Durham @ 2009-09-10 13:57 UTC (permalink / raw)
  To: clusters_sig-qjLDD68F18O7TbgM5vRIOg
  Cc: containers-qjLDD68F18O7TbgM5vRIOg,
	bugme-janitors-qjLDD68F18O7TbgM5vRIOg,
	fastboot-qjLDD68F18O7TbgM5vRIOg,
	virtualization-qjLDD68F18O7TbgM5vRIOg

High-End Luxury Watches online with great 78% OFF in September!
Your S0urce F0r Designer & Luxury Watches.
http://buildglass.com/

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2009-08-25 13:18                           ` Help Info
@ 2009-08-27 12:47                             ` Info
  0 siblings, 0 replies; 278+ messages in thread
From: Info @ 2009-08-27 12:47 UTC (permalink / raw)
  To: linux-raid


OK I think I've resolved this, so don't worry about me anymore.



On Tuesday 25 August 2009 06:18:38 Info@quantum-sci.net wrote:
> On Monday 24 August 2009 16:38:41 you wrote:
> > You'll need to provide a lot more information, starting with
> > kernel log at all relevant times (and don't use 'grep', just cut out
> > of contiguous section of the log including a few lines before and
> > after anything that might be relevant).
> > And "mdadm -E" of any relevant device.
> 
> # mdadm -E /dev/sdb
> mdadm: No md superblock detected on /dev/sdb.
> #
> 
> Aug 22 21:17:17 localhost kernel: [    3.048020] ata4: SATA link down (SStatus 0 SControl 300)
> Aug 22 21:17:17 localhost kernel: [    3.048037] ata6: SATA link down (SStatus 0 SControl 300)
> Aug 22 21:17:17 localhost kernel: [    3.048045] ata5: SATA link down (SStatus 0 SControl 300)
> Aug 22 21:17:17 localhost kernel: [    3.048054] ata3: SATA link down (SStatus 0 SControl 300)
> Aug 22 21:17:17 localhost kernel: [    3.201035] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
> Aug 22 21:17:17 localhost kernel: [    3.201044] ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
> Aug 22 21:17:17 localhost kernel: [    3.204330] ata2.00: ATA-8: WDC WD20EADS-00S2B0, 04.05G04, max UDMA/133
> Aug 22 21:17:17 localhost kernel: [    3.204333] ata2.00: 3907029168 sectors, multi 0: LBA48 NCQ (depth 31/32)
> Aug 22 21:17:17 localhost kernel: [    3.206097] ata1.00: ATA-8: WDC WD20EADS-00R6B0, 01.00A01, max UDMA/133
> Aug 22 21:17:17 localhost kernel: [    3.206100] ata1.00: 3907029168 sectors, multi 0: LBA48 NCQ (depth 31/32)
> Aug 22 21:17:17 localhost kernel: [    3.207345] ata2.00: configured for UDMA/133
> Aug 22 21:17:17 localhost kernel: [    3.211122] ata1.00: configured for UDMA/133
> Aug 22 21:17:17 localhost kernel: [    3.211203] scsi 0:0:0:0: Direct-Access     ATA      WDC WD20EADS-00R 01.0 PQ: 0 ANSI: 5
> Aug 22 21:17:17 localhost kernel: [    3.211406] sd 0:0:0:0: [sda] 3907029168 512-byte hardware sectors: (2.00 TB/1.81 TiB)
> Aug 22 21:17:17 localhost kernel: [    3.211417] sd 0:0:0:0: [sda] Write Protect is off
> Aug 22 21:17:17 localhost kernel: [    3.211435] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
> Aug 22 21:17:17 localhost kernel: [    3.211495]  sda:<5>sd 0:0:0:0: Attached scsi generic sg0 type 0
> Aug 22 21:17:17 localhost kernel: [    3.211568] scsi 1:0:0:0: Direct-Access     ATA      WDC WD20EADS-00S 04.0 PQ: 0 ANSI: 5
> Aug 22 21:17:17 localhost kernel: [    3.211719] sd 1:0:0:0: [sdb] 3907029168 512-byte hardware sectors: (2.00 TB/1.81 TiB)
> Aug 22 21:17:17 localhost kernel: [    3.211728] sd 1:0:0:0: [sdb] Write Protect is off
> Aug 22 21:17:17 localhost kernel: [    3.211746] sd 1:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
> Aug 22 21:17:17 localhost kernel: [    3.211798]  sdb:<5>sd 1:0:0:0: Attached scsi generic sg1 type 0
> Aug 22 21:17:17 localhost kernel: [    3.222483]  sdb1 sdb2 sdb3
> Aug 22 21:17:17 localhost kernel: [    3.222744] sd 1:0:0:0: [sdb] Attached SCSI disk
> Aug 22 21:17:17 localhost kernel: [    3.223107]  sda1 sda2 sda3
> Aug 22 21:17:17 localhost kernel: [    3.223321] sd 0:0:0:0: [sda] Attached SCSI disk
> 
> ...
> 
> Aug 22 21:17:17 localhost kernel: [    4.719904] md: md0 stopped.
> Aug 22 21:17:17 localhost kernel: [    4.756229] md: bind<sdb1>
> Aug 22 21:17:17 localhost kernel: [    4.756348] md: bind<sda1>
> Aug 22 21:17:17 localhost kernel: [    4.756365] md: kicking non-fresh sdb1 from array!
> Aug 22 21:17:17 localhost kernel: [    4.756370] md: unbind<sdb1>
> Aug 22 21:17:17 localhost kernel: [    4.761035] md: export_rdev(sdb1)
> Aug 22 21:17:17 localhost kernel: [    4.762357] raid1: raid set md0 active with 1 out of 2 mirrors
> Aug 22 21:17:17 localhost kernel: [    4.768650] md0: bitmap initialized from disk: read 10/10 pages, set 198 bits
> Aug 22 21:17:17 localhost kernel: [    4.768653] created bitmap (151 pages) for device md0
> Aug 22 21:17:17 localhost kernel: [    4.777530] md: md1 stopped.
> Aug 22 21:17:17 localhost kernel: [    4.777616]  md0: unknown partition table
> Aug 22 21:17:17 localhost kernel: [    4.781705] md: bind<sdb2>
> Aug 22 21:17:17 localhost kernel: [    4.781820] md: bind<sda2>
> Aug 22 21:17:17 localhost kernel: [    4.783078] raid10: raid set md1 active with 2 out of 2 devices
> Aug 22 21:17:17 localhost kernel: [    4.791063] md1: bitmap initialized from disk: read 13/13 pages, set 0 bits
> Aug 22 21:17:17 localhost kernel: [    4.791066] created bitmap (193 pages) for device md1
> Aug 22 21:17:17 localhost kernel: [    4.827200] md: md2 stopped.
> Aug 22 21:17:17 localhost kernel: [    4.827294]  md1: unknown partition table
> Aug 22 21:17:17 localhost kernel: [    4.835293] md: bind<sdb3>
> Aug 22 21:17:17 localhost kernel: [    4.835413] md: bind<sda3>
> Aug 22 21:17:17 localhost kernel: [    4.846525] raid10: raid set md2 active with 2 out of 2 devices
> Aug 22 21:17:17 localhost kernel: [    4.862129] md2: bitmap initialized from disk: read 14/14 pages, set 0 bits
> Aug 22 21:17:17 localhost kernel: [    4.862132] created bitmap (223 pages) for device md2
> Aug 22 21:17:17 localhost kernel: [    4.898461]  md2: unknown partition table
> 
> ...
> 
> Hm, how would the superblock have been destroyed?  This is a little disturbing.
> 
> 
> 
> 


^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2009-08-24 23:38                         ` Help NeilBrown
@ 2009-08-25 13:18                           ` Info
  2009-08-27 12:47                             ` Help Info
  0 siblings, 1 reply; 278+ messages in thread
From: Info @ 2009-08-25 13:18 UTC (permalink / raw)
  To: linux-raid

On Monday 24 August 2009 16:38:41 you wrote:
> You'll need to provide a lot more information, starting with
> kernel log at all relevant times (and don't use 'grep', just cut out
> of contiguous section of the log including a few lines before and
> after anything that might be relevant).
> And "mdadm -E" of any relevant device.

# mdadm -E /dev/sdb
mdadm: No md superblock detected on /dev/sdb.
#

Aug 22 21:17:17 localhost kernel: [    3.048020] ata4: SATA link down (SStatus 0 SControl 300)
Aug 22 21:17:17 localhost kernel: [    3.048037] ata6: SATA link down (SStatus 0 SControl 300)
Aug 22 21:17:17 localhost kernel: [    3.048045] ata5: SATA link down (SStatus 0 SControl 300)
Aug 22 21:17:17 localhost kernel: [    3.048054] ata3: SATA link down (SStatus 0 SControl 300)
Aug 22 21:17:17 localhost kernel: [    3.201035] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
Aug 22 21:17:17 localhost kernel: [    3.201044] ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
Aug 22 21:17:17 localhost kernel: [    3.204330] ata2.00: ATA-8: WDC WD20EADS-00S2B0, 04.05G04, max UDMA/133
Aug 22 21:17:17 localhost kernel: [    3.204333] ata2.00: 3907029168 sectors, multi 0: LBA48 NCQ (depth 31/32)
Aug 22 21:17:17 localhost kernel: [    3.206097] ata1.00: ATA-8: WDC WD20EADS-00R6B0, 01.00A01, max UDMA/133
Aug 22 21:17:17 localhost kernel: [    3.206100] ata1.00: 3907029168 sectors, multi 0: LBA48 NCQ (depth 31/32)
Aug 22 21:17:17 localhost kernel: [    3.207345] ata2.00: configured for UDMA/133
Aug 22 21:17:17 localhost kernel: [    3.211122] ata1.00: configured for UDMA/133
Aug 22 21:17:17 localhost kernel: [    3.211203] scsi 0:0:0:0: Direct-Access     ATA      WDC WD20EADS-00R 01.0 PQ: 0 ANSI: 5
Aug 22 21:17:17 localhost kernel: [    3.211406] sd 0:0:0:0: [sda] 3907029168 512-byte hardware sectors: (2.00 TB/1.81 TiB)
Aug 22 21:17:17 localhost kernel: [    3.211417] sd 0:0:0:0: [sda] Write Protect is off
Aug 22 21:17:17 localhost kernel: [    3.211435] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
Aug 22 21:17:17 localhost kernel: [    3.211495]  sda:<5>sd 0:0:0:0: Attached scsi generic sg0 type 0
Aug 22 21:17:17 localhost kernel: [    3.211568] scsi 1:0:0:0: Direct-Access     ATA      WDC WD20EADS-00S 04.0 PQ: 0 ANSI: 5
Aug 22 21:17:17 localhost kernel: [    3.211719] sd 1:0:0:0: [sdb] 3907029168 512-byte hardware sectors: (2.00 TB/1.81 TiB)
Aug 22 21:17:17 localhost kernel: [    3.211728] sd 1:0:0:0: [sdb] Write Protect is off
Aug 22 21:17:17 localhost kernel: [    3.211746] sd 1:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
Aug 22 21:17:17 localhost kernel: [    3.211798]  sdb:<5>sd 1:0:0:0: Attached scsi generic sg1 type 0
Aug 22 21:17:17 localhost kernel: [    3.222483]  sdb1 sdb2 sdb3
Aug 22 21:17:17 localhost kernel: [    3.222744] sd 1:0:0:0: [sdb] Attached SCSI disk
Aug 22 21:17:17 localhost kernel: [    3.223107]  sda1 sda2 sda3
Aug 22 21:17:17 localhost kernel: [    3.223321] sd 0:0:0:0: [sda] Attached SCSI disk

...

Aug 22 21:17:17 localhost kernel: [    4.719904] md: md0 stopped.
Aug 22 21:17:17 localhost kernel: [    4.756229] md: bind<sdb1>
Aug 22 21:17:17 localhost kernel: [    4.756348] md: bind<sda1>
Aug 22 21:17:17 localhost kernel: [    4.756365] md: kicking non-fresh sdb1 from array!
Aug 22 21:17:17 localhost kernel: [    4.756370] md: unbind<sdb1>
Aug 22 21:17:17 localhost kernel: [    4.761035] md: export_rdev(sdb1)
Aug 22 21:17:17 localhost kernel: [    4.762357] raid1: raid set md0 active with 1 out of 2 mirrors
Aug 22 21:17:17 localhost kernel: [    4.768650] md0: bitmap initialized from disk: read 10/10 pages, set 198 bits
Aug 22 21:17:17 localhost kernel: [    4.768653] created bitmap (151 pages) for device md0
Aug 22 21:17:17 localhost kernel: [    4.777530] md: md1 stopped.
Aug 22 21:17:17 localhost kernel: [    4.777616]  md0: unknown partition table
Aug 22 21:17:17 localhost kernel: [    4.781705] md: bind<sdb2>
Aug 22 21:17:17 localhost kernel: [    4.781820] md: bind<sda2>
Aug 22 21:17:17 localhost kernel: [    4.783078] raid10: raid set md1 active with 2 out of 2 devices
Aug 22 21:17:17 localhost kernel: [    4.791063] md1: bitmap initialized from disk: read 13/13 pages, set 0 bits
Aug 22 21:17:17 localhost kernel: [    4.791066] created bitmap (193 pages) for device md1
Aug 22 21:17:17 localhost kernel: [    4.827200] md: md2 stopped.
Aug 22 21:17:17 localhost kernel: [    4.827294]  md1: unknown partition table
Aug 22 21:17:17 localhost kernel: [    4.835293] md: bind<sdb3>
Aug 22 21:17:17 localhost kernel: [    4.835413] md: bind<sda3>
Aug 22 21:17:17 localhost kernel: [    4.846525] raid10: raid set md2 active with 2 out of 2 devices
Aug 22 21:17:17 localhost kernel: [    4.862129] md2: bitmap initialized from disk: read 14/14 pages, set 0 bits
Aug 22 21:17:17 localhost kernel: [    4.862132] created bitmap (223 pages) for device md2
Aug 22 21:17:17 localhost kernel: [    4.898461]  md2: unknown partition table

...

Hm, how would the superblock have been destroyed?  This is a little disturbing.




^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2009-08-24 23:08                       ` Help Info
@ 2009-08-24 23:38                         ` NeilBrown
  2009-08-25 13:18                           ` Help Info
  0 siblings, 1 reply; 278+ messages in thread
From: NeilBrown @ 2009-08-24 23:38 UTC (permalink / raw)
  To: Info; +Cc: linux-raid

On Tue, August 25, 2009 9:08 am, Info@quantum-sci.net wrote:
>
> The sync has finally finished, but something's wrong with the first
> partition set;  Only sda1 is a member of md0.  In dmesg I find:
> [    4.756365] md: kicking non-fresh sdb1 from array!
>
> Huh?  If it's not fresh, why doesn't it sync it?  What should I do about
> this?  How did it happen on a new array?


You'll need to provide a lot more information, starting with
kernel log at all relevant times (and don't use 'grep', just cut out
of contiguous section of the log including a few lines before and
after anything that might be relevant).
And "mdadm -E" of any relevant device.

"Kicking non-free sdb1 from arrays" is a message that you get when
assembling an array if the metadata on sdb1 is older than the others.
This can happen if it was evicted from the array due to failure or
if the array was assembled without sdb1 for some reason.  There
are probably other scenarios.
That is why I need to see recent history, including anything
from the last time the array was active.

NeilBrown



^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
       [not found]                     ` <200908230631.46865.Info@quantum-sci.net>
@ 2009-08-24 23:08                       ` Info
  2009-08-24 23:38                         ` Help NeilBrown
  0 siblings, 1 reply; 278+ messages in thread
From: Info @ 2009-08-24 23:08 UTC (permalink / raw)
  To: linux-raid


The sync has finally finished, but something's wrong with the first partition set;  Only sda1 is a member of md0.  In dmesg I find:
[    4.756365] md: kicking non-fresh sdb1 from array!

Huh?  If it's not fresh, why doesn't it sync it?  What should I do about this?  How did it happen on a new array?



^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2009-08-22 18:12               ` Help Info
  2009-08-22 20:45                 ` Help Info
@ 2009-08-23 20:28                 ` John Robinson
  1 sibling, 0 replies; 278+ messages in thread
From: John Robinson @ 2009-08-23 20:28 UTC (permalink / raw)
  To: Info; +Cc: linux-raid

On 22/08/2009 19:12, Info@quantum-sci.net wrote:
> On Saturday 22 August 2009 09:47:48 John Robinson wrote:
[...]
>>> What partition type should I use rather than raid autodetect?  Or should I revert to 0.90 metadata?
>> Probably type DA, Non-FS data, though type FD will be fine even if 
>> they're not auto-detected.
> 
> It simply found 'bad magick' with FD, so that doesn't work with the newer versions.  I tried to use both newer versions, but it's not possible.  You sound not quite sure of the partition type, so I'll stick with FD and 0.90.  Thanks though John.

I said "probably" DA because that's what's been suggested by others 
previously on this list. Others have simply used 83, but that's not 
ideal because if the partitions appear to have filesystems on (e.g. the 
metadata's not at the beginning), they might get auto-mounted without md 
RAID. I'm sure FD will work fine with later metadata versions as long as 
you have mdadm in your initramfs, and while as you've noted there'll be 
a whinge in the boot log about it not being version 0.90, it's not going 
to cause the kernel to lock up or anything like that.

Cheers,

John.

^ permalink raw reply	[flat|nested] 278+ messages in thread

* RE: Help
  2009-08-22 20:45                 ` Help Info
@ 2009-08-22 20:59                   ` Guy Watkins
       [not found]                     ` <200908230631.46865.Info@quantum-sci.net>
  0 siblings, 1 reply; 278+ messages in thread
From: Guy Watkins @ 2009-08-22 20:59 UTC (permalink / raw)
  To: Info, linux-raid

} -----Original Message-----
} From: linux-raid-owner@vger.kernel.org [mailto:linux-raid-
} owner@vger.kernel.org] On Behalf Of Info@quantum-sci.net
} Sent: Saturday, August 22, 2009 4:45 PM
} To: linux-raid@vger.kernel.org
} Subject: Re: Help
} 
} On Saturday 22 August 2009 11:12:35 Info@quantum-sci.net wrote:
} > Goswin says, "For scanning your videos raid10 with far layout is
} probably best with
} > a large read ahead."  I have the RAID10 blocksize set to 1024 for the
} video partition, but any idea how to set readahead?
} 
} My gosh, it turns out this setting is astounding.  You test your drive
} speed with some large file, as such:
} # time dd if={somelarge}.iso of=/dev/null bs=256k
} 
} ... and check your drive's default readahead setting:
} # blockdev --getra /dev/sda
} 256
} 
} ... then test with various settings like 1024, 1536, 2048, 4096, 8192, and
} maybe 16384:
} # blockdev --setra 4096 /dev/sda
} 
} Here are the results for my laptop.  I can't test the HTPC with the array
} yet, as it's still syncing.
}    256	 40.4 MB/s
}  1024	123 MB/s
}  1536	2.7 GB/s
}  2048	2.4 GB/s
}  4096	2.4 GB/s
}  8192	2.4 GB/s
} 16384	2.5 GB/s
} 
} I suspect it's best to use the minimum readahead for the best speed (in my
} case 1536), for two reasons:
} - To save memory;
} - So there isn't such a performance impact when the blocks are not
} sequential.

The disk cache is being used.  You should reboot between each test, or use a
file much bigger than the amount of RAM you have.  Or use a different file
each time.


^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2009-08-22 18:12               ` Help Info
@ 2009-08-22 20:45                 ` Info
  2009-08-22 20:59                   ` Help Guy Watkins
  2009-08-23 20:28                 ` Help John Robinson
  1 sibling, 1 reply; 278+ messages in thread
From: Info @ 2009-08-22 20:45 UTC (permalink / raw)
  To: linux-raid

On Saturday 22 August 2009 11:12:35 Info@quantum-sci.net wrote:
> Goswin says, "For scanning your videos raid10 with far layout is probably best with
> a large read ahead."  I have the RAID10 blocksize set to 1024 for the video partition, but any idea how to set readahead?

My gosh, it turns out this setting is astounding.  You test your drive speed with some large file, as such:
# time dd if={somelarge}.iso of=/dev/null bs=256k

... and check your drive's default readahead setting:
# blockdev --getra /dev/sda
256

... then test with various settings like 1024, 1536, 2048, 4096, 8192, and maybe 16384:
# blockdev --setra 4096 /dev/sda

Here are the results for my laptop.  I can't test the HTPC with the array yet, as it's still syncing.
   256	 40.4 MB/s
 1024	123 MB/s
 1536	2.7 GB/s
 2048	2.4 GB/s
 4096	2.4 GB/s
 8192	2.4 GB/s
16384	2.5 GB/s

I suspect it's best to use the minimum readahead for the best speed (in my case 1536), for two reasons:
- To save memory;
- So there isn't such a performance impact when the blocks are not sequential.


^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2009-08-22 16:47             ` Help John Robinson
@ 2009-08-22 18:12               ` Info
  2009-08-22 20:45                 ` Help Info
  2009-08-23 20:28                 ` Help John Robinson
  0 siblings, 2 replies; 278+ messages in thread
From: Info @ 2009-08-22 18:12 UTC (permalink / raw)
  To: linux-raid

On Saturday 22 August 2009 09:47:48 John Robinson wrote:
> You should have mkinitrd (that's what it is on Fedora/RHEL/CentOS) or 
> something similar with which you can build initramfs images for any kernel.

OK once I changed the version to 0.90 it stopped just at the kernel banner on boot and hung.  I was about to give up on RAID when your message came through, and I created the initrd.img file.  I always compile my own kernels and don't depend on an initrd, but it now seems to be necessary.  So in Debian:
# update-initramfs -o /boot/initrd.img-2.6.30-5
... reboot, and voila it did what it was supposed to, for a change.  I'm now resyncing my 2TB drives, which will take a good while.

 
> > What partition type should I use rather than raid autodetect?  Or should I revert to 0.90 metadata?
> 
> Probably type DA, Non-FS data, though type FD will be fine even if 
> they're not auto-detected.

It simply found 'bad magick' with FD, so that doesn't work with the newer versions.  I tried to use both newer versions, but it's not possible.  You sound not quite sure of the partition type, so I'll stick with FD and 0.90.  Thanks though John.

Goswin says, "For scanning your videos raid10 with far layout is probably best with
a large read ahead."  I have the RAID10 blocksize set to 1024 for the video partition, but any idea how to set readahead?





^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2009-08-22 12:56           ` Help Info
@ 2009-08-22 16:47             ` John Robinson
  2009-08-22 18:12               ` Help Info
  0 siblings, 1 reply; 278+ messages in thread
From: John Robinson @ 2009-08-22 16:47 UTC (permalink / raw)
  To: Info; +Cc: linux-raid

On 22/08/2009 13:56, Info@quantum-sci.net wrote:
[...]
> It is very lucid and clear, however I am slightly modifying it to use RAID10 on my second and third partitions.  When I come to 
> update-initramfs -u
> ... the only initrd it updates is for an old stock kernel.  It doesn't build one for any of my compiled kernels.

You should have mkinitrd (that's what it is on Fedora/RHEL/CentOS) or 
something similar with which you can build initramfs images for any kernel.

> What partition type should I use rather than raid autodetect?  Or should I revert to 0.90 metadata?

Probably type DA, Non-FS data, though type FD will be fine even if 
they're not auto-detected.

> Looking at dmesg it does say that md1 & 2 do not have a valid ==v.90== superblock.  There is no other linux raid partition type, so I guess it's got to be v.090.  Why do they make 1.1 and 1.2 then, if they do not work?

The newer metadata types have their benefits. Auto-detection is being 
deprecated, I think it's because things which are only for boot-up time 
are being pushed out of the permanently-loaded kernel into initramfs, so 
they don't hang around wasting space on a running system. For example, 
CentOS 5 uses autodetection, Fedora 10 automatically puts mdadm in the 
initramfs and runs it at the right time.

Cheers,

John.


^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2009-08-22  9:34         ` Help NeilBrown
@ 2009-08-22 12:56           ` Info
  2009-08-22 16:47             ` Help John Robinson
  0 siblings, 1 reply; 278+ messages in thread
From: Info @ 2009-08-22 12:56 UTC (permalink / raw)
  To: linux-raid

On Saturday 22 August 2009 02:34:12 NeilBrown wrote:
> You say md0 is raid1 but mdstat shows it to be raid10, so that won't boot.

Thanks Neil.  However that was an early attempt before I knew RAID10 won't boot.


> 'raid autodetect' only works for 0.90 metadata, and you are using 1.x.
> You should not use 'raid autodetect' partitions.  Rather the initrd
> should use mdadm to assemble the arrays.  Most distros seem to get this
> right these days.  Maybe you just need to rebuild your
> initrd...

I am not using an initrd.  Have all the RAID and disk drivers built into the (custom-compiled) kernel.  It uses mdadm to assemble the arrays?  Maybe this is the problem.

I am using this procedure to build a RAID array from a live system:
http://www.howtoforge.com/software-raid1-grub-boot-debian-etch

It is very lucid and clear, however I am slightly modifying it to use RAID10 on my second and third partitions.  When I come to 
update-initramfs -u
... the only initrd it updates is for an old stock kernel.  It doesn't build one for any of my compiled kernels.

What partition type should I use rather than raid autodetect?  Or should I revert to 0.90 metadata?

Looking at dmesg it does say that md1 & 2 do not have a valid ==v.90== superblock.  There is no other linux raid partition type, so I guess it's got to be v.090.  Why do they make 1.1 and 1.2 then, if they do not work?


^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2009-08-22  6:14       ` Help Info
@ 2009-08-22  9:34         ` NeilBrown
  2009-08-22 12:56           ` Help Info
  0 siblings, 1 reply; 278+ messages in thread
From: NeilBrown @ 2009-08-22  9:34 UTC (permalink / raw)
  To: Info; +Cc: linux-raid

On Sat, August 22, 2009 4:14 pm, Info@quantum-sci.net wrote:
>
> Not able to boot to my RAID devices.  md0 is / and ext3 RAID1, but md1 and
> md2 are swap and JFS respectively, RAID10 created like this:
> mdadm --create /dev/md1 --level=raid10 --layout=o2 --metadata=1.2
> --chunk=256 --raid-disks=2 missing /dev/sdb2
>
> It gives the initial kernel boot message but then says
> invalid raid superblock magic on sdb2
> invalid raid superblock magic on sdb3
>
> ... and halts progress.  I have to hard-reset to continue.  Why isn't the
> error more specific?

You say md0 is raid1 but mdstat shows it to be raid10, so that won't boot.

'raid autodetect' only works for 0.90 metadata, and you are using 1.x.
You should not use 'raid autodetect' partitions.  Rather the initrd
should use mdadm to assemble the arrays.  Most distros seem to get this
right these days.  Maybe you just need to rebuild your
initrd...

NeilBrown


>
> I've tried setting the metadata to 1.1, and tried adjusting mdadm.conf
> from /dev/md/1 to /dev/md1, but neither helped.  The parts are set to raid
> autodetect and the kernel parameter is set to md_autodetect.  What could
> be wrong?
>
>
>
> On Friday 21 August 2009 12:20:28 Info@quantum-sci.net wrote:
>>
>> My God, the command is not working.  I need to remove sdb1 from md0 so I
>> can change it from a RAID10 to RAID1, and it simply ignores my command:
>> # mdadm /dev/md0 --fail /dev/sdb1 --remove /dev/sdb1
>> # cat /proc/mdstat
>> Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5]
>> [raid4] [multipath]
>> md2 : active raid10 sdb3[1]
>>       1868560128 blocks super 1.2 64K chunks 2 offset-copies [2/1] [_U]
>>       bitmap: 94/446 pages [376KB], 2048KB chunk
>>
>> md1 : active raid10 sdb2[1]
>>       6297344 blocks super 1.2 64K chunks 2 offset-copies [2/1] [_U]
>>       bitmap: 0/25 pages [0KB], 128KB chunk
>>
>> md0 : active raid10 sdb1[1]
>>       78654080 blocks super 1.2 64K chunks 2 offset-copies [2/1] [_U]
>>       bitmap: 76/151 pages [304KB], 256KB chunk
>>
>> unused devices: <none>
>> #
>>
>>
>> My system is half-converted and is now unbootable.  What am I going to
>> do?
>>
>>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-raid" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>


^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2009-08-21 19:20     ` Help Info
  2009-08-21 19:38       ` Help John Robinson
@ 2009-08-22  6:14       ` Info
  2009-08-22  9:34         ` Help NeilBrown
  1 sibling, 1 reply; 278+ messages in thread
From: Info @ 2009-08-22  6:14 UTC (permalink / raw)
  To: linux-raid


Not able to boot to my RAID devices.  md0 is / and ext3 RAID1, but md1 and md2 are swap and JFS respectively, RAID10 created like this:
mdadm --create /dev/md1 --level=raid10 --layout=o2 --metadata=1.2 --chunk=256 --raid-disks=2 missing /dev/sdb2

It gives the initial kernel boot message but then says 
invalid raid superblock magic on sdb2
invalid raid superblock magic on sdb3

... and halts progress.  I have to hard-reset to continue.  Why isn't the error more specific?

I've tried setting the metadata to 1.1, and tried adjusting mdadm.conf from /dev/md/1 to /dev/md1, but neither helped.  The parts are set to raid autodetect and the kernel parameter is set to md_autodetect.  What could be wrong?
 


On Friday 21 August 2009 12:20:28 Info@quantum-sci.net wrote:
> 
> My God, the command is not working.  I need to remove sdb1 from md0 so I can change it from a RAID10 to RAID1, and it simply ignores my command:
> # mdadm /dev/md0 --fail /dev/sdb1 --remove /dev/sdb1
> # cat /proc/mdstat
> Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath]
> md2 : active raid10 sdb3[1]
>       1868560128 blocks super 1.2 64K chunks 2 offset-copies [2/1] [_U]
>       bitmap: 94/446 pages [376KB], 2048KB chunk
> 
> md1 : active raid10 sdb2[1]
>       6297344 blocks super 1.2 64K chunks 2 offset-copies [2/1] [_U]
>       bitmap: 0/25 pages [0KB], 128KB chunk
> 
> md0 : active raid10 sdb1[1]
>       78654080 blocks super 1.2 64K chunks 2 offset-copies [2/1] [_U]
>       bitmap: 76/151 pages [304KB], 256KB chunk
> 
> unused devices: <none>
> #
> 
> 
> My system is half-converted and is now unbootable.  What am I going to do?
> 
> 


^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2009-08-21 19:38       ` Help John Robinson
@ 2009-08-21 20:51         ` Info
  0 siblings, 0 replies; 278+ messages in thread
From: Info @ 2009-08-21 20:51 UTC (permalink / raw)
  To: linux-raid

On Friday 21 August 2009 12:38:00 John Robinson wrote:
> Well, it won't let you remove the only thing keeping the array active. 
> Stop the array first with `mdadm --stop /dev/md0`. After that I think 
> you can just create your new RAID-1 array without doing anything else.

WHEW, thank you.



^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2009-08-21 19:20     ` Help Info
@ 2009-08-21 19:38       ` John Robinson
  2009-08-21 20:51         ` Help Info
  2009-08-22  6:14       ` Help Info
  1 sibling, 1 reply; 278+ messages in thread
From: John Robinson @ 2009-08-21 19:38 UTC (permalink / raw)
  To: Info; +Cc: linux-raid

On 21/08/2009 20:20, Info@quantum-sci.net wrote:
> My God, the command is not working.  I need to remove sdb1 from md0 so I can change it from a RAID10 to RAID1, and it simply ignores my command:
> # mdadm /dev/md0 --fail /dev/sdb1 --remove /dev/sdb1
> # cat /proc/mdstat
> Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath]
> md2 : active raid10 sdb3[1]
>       1868560128 blocks super 1.2 64K chunks 2 offset-copies [2/1] [_U]
>       bitmap: 94/446 pages [376KB], 2048KB chunk
> 
> md1 : active raid10 sdb2[1]
>       6297344 blocks super 1.2 64K chunks 2 offset-copies [2/1] [_U]
>       bitmap: 0/25 pages [0KB], 128KB chunk
> 
> md0 : active raid10 sdb1[1]
>       78654080 blocks super 1.2 64K chunks 2 offset-copies [2/1] [_U]
>       bitmap: 76/151 pages [304KB], 256KB chunk

Well, it won't let you remove the only thing keeping the array active. 
Stop the array first with `mdadm --stop /dev/md0`. After that I think 
you can just create your new RAID-1 array without doing anything else.

Cheers,

John.

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2009-08-21 18:02   ` Info
@ 2009-08-21 19:20     ` Info
  2009-08-21 19:38       ` Help John Robinson
  2009-08-22  6:14       ` Help Info
  0 siblings, 2 replies; 278+ messages in thread
From: Info @ 2009-08-21 19:20 UTC (permalink / raw)
  To: linux-raid


My God, the command is not working.  I need to remove sdb1 from md0 so I can change it from a RAID10 to RAID1, and it simply ignores my command:
# mdadm /dev/md0 --fail /dev/sdb1 --remove /dev/sdb1
# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath]
md2 : active raid10 sdb3[1]
      1868560128 blocks super 1.2 64K chunks 2 offset-copies [2/1] [_U]
      bitmap: 94/446 pages [376KB], 2048KB chunk

md1 : active raid10 sdb2[1]
      6297344 blocks super 1.2 64K chunks 2 offset-copies [2/1] [_U]
      bitmap: 0/25 pages [0KB], 128KB chunk

md0 : active raid10 sdb1[1]
      78654080 blocks super 1.2 64K chunks 2 offset-copies [2/1] [_U]
      bitmap: 76/151 pages [304KB], 256KB chunk

unused devices: <none>
#


My system is half-converted and is now unbootable.  What am I going to do?

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2009-04-24 11:53   ` Help Sudeept Prusti
@ 2009-04-24 16:05     ` Alan Horstmann
  0 siblings, 0 replies; 278+ messages in thread
From: Alan Horstmann @ 2009-04-24 16:05 UTC (permalink / raw)
  To: Sudeept Prusti; +Cc: ALSA devel

On Friday 24 April 2009 12:53, Sudeept Prusti wrote:
> Hi Jaroslav,
>
> can u tell what all are changes to be made for the program to playout a
> simple PCM file. if any reference you could give me then it's quiet good.
>

Perhaps by studying the code in aplay, and the examples at:

http://www.alsa-project.org/alsa-doc/alsa-lib/examples.html

Alan

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2009-04-24 11:39 ` Help Jaroslav Kysela
@ 2009-04-24 11:53   ` Sudeept Prusti
  2009-04-24 16:05     ` Help Alan Horstmann
  0 siblings, 1 reply; 278+ messages in thread
From: Sudeept Prusti @ 2009-04-24 11:53 UTC (permalink / raw)
  To: Jaroslav Kysela; +Cc: ALSA development

Hi Jaroslav,
 
can u tell what all are changes to be made for the program to playout a simple PCM file. if any reference you could give me then it's quiet good.
 
Thanks,
Sudeept

________________________________

From: Jaroslav Kysela [mailto:perex@perex.cz]
Sent: Fri 4/24/2009 5:09 PM
To: Sudeept Prusti
Cc: ALSA development
Subject: Re: [alsa-devel] Help



On Fri, 24 Apr 2009, Sudeept Prusti wrote:

> Hi all,
>
> As i am working on alsa for minimal PCM playback (8khz,mono,16 bit pcm
> file).
>
> When i tried to allocate 1k buffer and send through snd_pcm_writei()
> call it doesn't play perfect and skips are there in between. If we keep
> on increasing in allocating the buffer for 31 kb then it could play the
> buffers randomly.

Sure. Your file read logic is broken. You have to check number of bytes
read and do not assume that 'k' bytes were read all time. Also, using seek
is not necessary for sequential reads.

                                                Jaroslav

-----
Jaroslav Kysela <perex@perex.cz>
Linux Kernel Sound Maintainer
ALSA Project, Red Hat, Inc.




The information contained in this electronic message and any attachments to this message are intended for the exclusive 
use of the addressee(s) and may contain proprietary, confidential or privileged information. If you are not the intended
 recipient, you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately and destroy
 all copies of this message and any attachments contained in it.

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2009-04-24 11:31 Help Sudeept Prusti
@ 2009-04-24 11:39 ` Jaroslav Kysela
  2009-04-24 11:53   ` Help Sudeept Prusti
  0 siblings, 1 reply; 278+ messages in thread
From: Jaroslav Kysela @ 2009-04-24 11:39 UTC (permalink / raw)
  To: Sudeept Prusti; +Cc: ALSA development

On Fri, 24 Apr 2009, Sudeept Prusti wrote:

> Hi all,
>
> As i am working on alsa for minimal PCM playback (8khz,mono,16 bit pcm 
> file).
>
> When i tried to allocate 1k buffer and send through snd_pcm_writei() 
> call it doesn't play perfect and skips are there in between. If we keep 
> on increasing in allocating the buffer for 31 kb then it could play the 
> buffers randomly.

Sure. Your file read logic is broken. You have to check number of bytes 
read and do not assume that 'k' bytes were read all time. Also, using seek 
is not necessary for sequential reads.

 						Jaroslav

-----
Jaroslav Kysela <perex@perex.cz>
Linux Kernel Sound Maintainer
ALSA Project, Red Hat, Inc.

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
@ 2009-04-24 11:31 Sudeept Prusti
  2009-04-24 11:39 ` Help Jaroslav Kysela
  0 siblings, 1 reply; 278+ messages in thread
From: Sudeept Prusti @ 2009-04-24 11:31 UTC (permalink / raw)
  To: alsa-devel

Hi all,
 
As i am working on alsa for minimal PCM playback (8khz,mono,16 bit pcm file).
 
When i tried to allocate 1k buffer and send through snd_pcm_writei() call it doesn't play perfect and skips are there in between. If we keep on increasing in allocating the buffer for 31 kb then it could play the buffers randomly.
 
Code is attached for ur reference below.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#include <alsa/asoundlib.h>
#include <stdio.h>
#include <stdlib.h>

#define  k	(31*1024)

static void playback(FILE *fd);

int main(int argc, char *argv[]) 
{
  FILE *fd;
  fd = fopen(argv[1],"r");
  playback(fd);
  return 0;
}

static void playback(FILE *fd)
{
  int rc,err;
  snd_pcm_t *handle;
  snd_pcm_hw_params_t *params;
  unsigned int val;
  snd_pcm_uframes_t frames;
  unsigned char *buffer;
  int seek_size=0;
  int nonblock = 0;

  printf("Entered Playback Module \n");
	
  /* Open PCM device for playback. */
  rc = snd_pcm_open(&handle, "default",SND_PCM_STREAM_PLAYBACK, 0);
  if(rc >= 0)
  {
  	printf("Open PCM Success:  %d \n",rc);
  }
  if (rc < 0) {
    	fprintf(stderr,"unable to open pcm device: %s\n",snd_strerror(rc));
	exit(1);
  }
  
  /* PCM Hardware Parameters Allocation.  */
  err = snd_pcm_hw_params_malloc (&params);

  if(err>=0)
  {
	printf("Hardware Params Allocation Success:  %d \n",err);
  }

  if (err < 0)
  {
  	fprintf (stderr, "cannot allocate hardware parameter structure (%s)\n", snd_strerror (err));
      	exit (1);
  }
  /* Intialize PCM Hardware Parameters */	
  err = snd_pcm_hw_params_any(handle, params);
  if(err >=0)
  {
  	printf("PCM HW params Initialization Success : %d \n",err);
  }
  if (err < 0)
  {
	printf("Cannot initialize hardware parameter structure \n");
	exit(EXIT_FAILURE);
  }

  /* Set the PCM Hardware parameters. */

  /* Interleaved mode */
  err = snd_pcm_hw_params_set_access(handle, params,SND_PCM_ACCESS_RW_INTERLEAVED);
  if (err >= 0)
  {
	printf("Access Type Available: %d \n",err);
  }
  if (err < 0)
  {
	printf("Access Type Not-available: %d \n",err);
	exit(EXIT_FAILURE);
   }

  /* Signed 16-bit little-endian format */
  err = snd_pcm_hw_params_set_format(handle, params,SND_PCM_FORMAT_S16_LE);
  if (err >= 0)
  {
	printf("Sample format Available: %d \n",err);
  }
  if (err < 0)
  {
	printf("Sample format Non-Available \n");
	exit(EXIT_FAILURE);
  }

  /* One Channel (Mono) */
  err = snd_pcm_hw_params_set_channels(handle, params, 1);
  if (err >= 0)
  {
	printf("Channels Available: %d \n",err);
  }
  if (err < 0)
  {
	printf("Channels Non-Available \n");
	exit(EXIT_FAILURE);
  }

  /* 8khz sampling rate */
  err = snd_pcm_hw_params_set_rate (handle, params, 8000, 0);
  if (err >= 0)
  {
      	printf ("Sample Rate Set Success: %d \n",err);
  }
  if (err < 0)
  {
      	fprintf (stderr, "cannot set sample rate (%s)\n", snd_strerror (err));
      	exit (EXIT_FAILURE);
  }
  
  /* Write the parameters to the alsa-driver */
  rc = snd_pcm_hw_params(handle, params);
  if(rc >=0)
  {
  	printf("Set HW Parameters Success: %d \n",rc);
  }
  if (rc < 0)
  {
   	fprintf(stderr,"Unable to Set HW Parameters: %s\n",snd_strerror(rc));
	exit(1);
  }
  /* Allocate buffer*/
  buffer = (unsigned char *) malloc(k);

  if (buffer == NULL)
  {
	printf("Not Enough Memory: %c \n",buffer);
	exit(1);
  }

  while (!feof(fd))
  {
    if(fd != NULL)
    {
 	printf("File pointer is not NULL \n");
    }
    printf("Current Position of File Pointer is: %d\n",ftell(fd));

    rc = fread(buffer,k,1,fd);
    printf("Data Read from File is: %d \n",rc);
    
    if(rc > 0)
    {
    	printf("File Read Success \n");
    }
    
    seek_size = seek_size + k;    
    fseek(fd,seek_size,SEEK_SET);

    if (rc == 0)
    {
      	printf("End of File Reached: %d \n",rc);
      	break;
    } 
    rc = snd_pcm_writei(handle, buffer, k);
    printf("Write: %d  bytes \n",rc);
    
    if (rc == -EPIPE)
    {
      printf("underrun occurred \n");
      snd_pcm_prepare(handle);
    }
    else if (rc < 0)
    {
    	fprintf(stderr,"Error From Writei Call: %s\n",snd_strerror(rc));
       exit(1);
    }  
   }//End of While
   
   fclose(fd);
   snd_pcm_drain(handle);
   snd_pcm_close(handle);
   free(buffer);
}//End of Playback
--------------------------------------------------------------------------------------------------------------
Can anyone help me out where i am doing wrong.Ur's valuable suggestions are welcomed.
 
Best Regards,
Sudeept

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
       [not found] <20081205170026.821496198E3@hormel.redhat.com>
@ 2008-12-05 17:24 ` Brian Rosenberger
  0 siblings, 0 replies; 278+ messages in thread
From: Brian Rosenberger @ 2008-12-05 17:24 UTC (permalink / raw)
  To: video4linux-list

Am Freitag, den 05.12.2008, 12:00 -0500 schrieb
video4linux-list-request@redhat.com:
> Send video4linux-list mailing list submissions to
> 	video4linux-list@redhat.com
> 
> To subscribe or unsubscribe via the World Wide Web, visit
> 	https://www.redhat.com/mailman/listinfo/video4linux-list
> or, via email, send a message with subject or body 'help' to
> 	video4linux-list-request@redhat.com
> 
> You can reach the person managing the list at
> 	video4linux-list-owner@redhat.com
> 
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of video4linux-list digest..."
> Today's Topics:
> 
>    1. Re: [PATCH 0 of 4] ov534 patches (Jim Paris)
>    2. RE: [PATCH] Add OMAP2 camera driver
>       (Aguirre Rodriguez, Sergio Alberto)
>    3. Re: v4l support for "Pinnacle PCTV HD Pro USB Stick" (Steve Fink)
>    4. bttv timeouts (Ori Pessach)
>    5. Re: v4l support for "Pinnacle PCTV HD Pro USB Stick"
>       (Devin Heitmueller)
>    6. WinFast PalmTop DTV200H USB TvTuner (Nagy Gabor)
>    7. Re: WinFast PalmTop DTV200H USB TvTuner (Devin Heitmueller)
>    8. HVR-4000 need to switch 19/14V (Chris Ruehl)
>    9. Re: HVR-4000 need to switch 19/14V (Chris Ruehl)
>   10. Pinnacle HDTV Ultimate USB (Erik Tollerud)
>   11. Re: Fwd: [PATCH 2/2] V4L/DVB: pxa-camera: use memory mapped
>       IO access for camera (QCI) registers (Guennadi Liakhovetski)
>   12. Re: Fwd: [PATCH 2/2] V4L/DVB: pxa-camera: use memory mapped
>       IO	access for camera (QCI) registers (Eric Miao)
>   13. hg - cx88-alsa brocken with 2.6.27 (Chris Ruehl)
>   14. [PATCH 1/2] Addition of Set Routing ioctl support[V5]
>       (hvaibhav@ti.com)
>   15. [PATCH 2/2] TVP514x Driver with Review comments fixed [V5]
>       (hvaibhav@ti.com)
>   16. RE: [PATCH 1/2] Addition of Set Routing ioctl support[V5]
>       (Hiremath, Vaibhav)
>   17. [PULL] http://www.linuxtv.org/hg/~hverkuil/v4l-dvb (Hans Verkuil)
>   18. Re: Pinnacle HDTV Ultimate USB (Devin Heitmueller)
>   19. Pinnacle PCTV USB (DVB-T device [eb1a:2870]) (Brian Rosenberger)
>   20. Re: Pinnacle PCTV USB (DVB-T device [eb1a:2870])
>       (Devin Heitmueller)
> E-Mail-Nachricht-Anlage
> > -------- Weitergeleitete Nachricht --------
> > Von: Jim Paris <jim@jtan.com>
> > An: Jean-Francois Moine <moinejf@free.fr>, Antonio Ospite
> > <ospite@studenti.unina.it>
> > Kopie: video4linux-list@redhat.com
> > Betreff: Re: [PATCH 0 of 4] ov534 patches
> > Datum: Thu, 4 Dec 2008 12:15:46 -0500
> > 
> > Hi Jean, Antonio,
> > 
> > Jean-Francois Moine wrote:
> > > Thank you for these patchs. Some changes were already done in my
> > > repository. I merged them and pushed. May you check if everything is
> > > correct?
> > 
> > I took a brief look and the merge looks OK, thanks.
> > 
> > > Also, I moved the last fid and pts to the sd structure. This allows many
> > > webcams to work simultaneously. I was wondering about the reset of these
> > > variables: last_fid is never reset and last_pts is reset on
> > > UVC_STREAM_EOF. Shouldn't they also be reset on streaming start?
> > 
> > I didn't consider multiple cameras.  Moving them of course makes sense
> > for that.  I did think of the reset case and thought it was OK, but
> > given Antonio's report below there might need to be some fixes in here
> > anyway.
> > 
> > Antonio Ospite wrote:
> > > Tested the latest version, I am getting "payload error"s setting
> > > frame_rate=50, loosing about 50% of frames. I tried raising
> > > bulk_size but then I get "frame overflow" errors from gspca, I'll
> > > investigate further.
> > 
> > I don't think I see any payload errors even at 50fps.  For the bulk
> > size, I'm not sure exactly how the payloads work into that.  I suppose
> > that when bulk_size is larger than the camera's payload size (2048),
> > we get another payload header at data[2048] but don't pay attention to
> > it.  If this header had the EOF then we can send gspca too much data,
> > causing frame overflow.  (there's no overflow check in ov534 since
> > gspca handles it already).
> > 
> > With the current setup, we're essentially getting a UVC stream.  This
> > makes sense since the marketing for ov534 says it supports UVC.  So
> > some documentation for this would be
> >   http://www.usb.org/developers/devclass_docs/USB_Video_Class_1_1.zip
> > 
> > This header and payload format is handled by a couple drivers that I
> > found:
> > 
> >   linux/drivers/media/video/uvc/uvc_video.c
> >      uvc_video_decode_start
> >      uvc_video_decode_data
> >      uvc_video_decode_end
> >      
> >   (I thought there was another Linux driver that also handled this
> >    payloads itself, but now I can't find it again)
> > 
> >   http://www.openbsd.org/cgi-bin/cvsweb/src/sys/dev/usb/uvideo.c?rev=1.99
> >      uvideo_vs_decode_stream_header
> > 
> > Some discussion I found on payload headers in bulk transfers is here
> > 
> >   http://osdir.com/ml/linux.drivers.uvc.devel/2007-05/msg00036.html
> > 
> > Maybe finding a way to switch to isoc would make things easier?
> > 
> > -jim
> > 
> > 
> E-Mail-Nachricht-Anlage
> > -------- Weitergeleitete Nachricht --------
> > Von: Aguirre Rodriguez, Sergio Alberto <saaguirre@ti.com>
> > An: Sakari Ailus <sakari.ailus@nokia.com>, Hiremath, Vaibhav
> > <hvaibhav@ti.com>
> > Kopie: video4linux-list@redhat.com <video4linux-list@redhat.com>,
> > linux-omap@vger.kernel.org Mailing List <linux-omap@vger.kernel.org>
> > Betreff: RE: [PATCH] Add OMAP2 camera driver
> > Datum: Thu, 4 Dec 2008 12:28:52 -0600
> > 
> > > Sakari Ailus wrote:
> > > ext Hiremath, Vaibhav wrote:
> > > > OMAP3 -
> > > > 	Display - (Posted twice with old DSS library)
> > > > 		- omap_vout.c
> > > > 		- omap_voutlib.c
> > > > 		- omap_voutlib.h
> > > > 		- omap_voutdef.h
> > > > 	Camera - (Will come soon)
> > > > 		- omap34xxcam.c
> > > > 		- omap34xxcam.h
> > > > 	ISP - (Will come soon)
> > > > 		- Here definitely we will plenty number of files.
> > > 
> > > I think that the OMAP 3 stuff could go into a separate directory, say
> > > omap3 or omap3isp. But for the OMAP 1 or OMAP 2 camera drivers, I'd
> > > perhaps just prefix those with corresponding OMAP (omap1 etc.).
> > > 
> > > The current OMAP 3 camera driver has few dependencies to OMAP 3 left so
> > > it seems that it's going to be generic. It's just a question of when the
> > > OMAP 3 ISP driver can offer a better interface towards the camera driver.
> > > 
> > [Aguirre, Sergio] Hi, I have some comments about this:
> > 
> > IMHO, I think that we can keep same names for OMAP3 camera driver, and keep it at the same level than omap1 and omap2 cam drivers, but for isp folder, I agree with Sakari that has to be named omap3isp.
> > 
> > Although the end result of making OMAP3 cam driver independent from ISP doesn't make much sense to me, as in OMAP3 the ISP is needed even for the minimal handling required for receiving data from the sensors that the camera driver supports. (Minimal datapath is CCP2->SDRAM or CSI2->SDRAM, and that requires ISP MMU and the corresponding receivers, which are considered part of the ISP)
> > 
> > About display filenames, if they are compatible with all OMAP versions (1, 2, 3), then current name makes sense, if no, then omap3_vout* will look clearer.
> > 
> > What do you think?
> > 
> > Regards,
> > Sergio
> > 
> > 
> > 
> E-Mail-Nachricht-Anlage
> > -------- Weitergeleitete Nachricht --------
> > Von: Steve Fink <sphink@gmail.com>
> > An: Devin Heitmueller <devin.heitmueller@gmail.com>
> > Kopie: video4linux-list@redhat.com
> > Betreff: Re: v4l support for "Pinnacle PCTV HD Pro USB Stick"
> > Datum: Thu, 4 Dec 2008 10:09:52 -0800
> > 
> > Ok, thanks. I guess I'll try returning this one, then.
> > 
> > I wonder if there's any way to apply pressure -- I mean, encouragement
> > -- to manufacturers to either change model numbers or at least release
> > serial number ranges or something along with specs for their hardware.
> > The only reason I bought this device was because it had composite
> > input and Linux support -- or at least, the earlier version with
> > exactly the same description did.
> > 
> > I suppose I could take a quick stab at making my app decode the mpeg
> > frames, but it's really suboptimal for my setup (I am very sensitive
> > to latency and CPU load.)
> > 
> > Anyway, thanks for your work!
> > Steve
> > 
> > On Thu, Dec 4, 2008 at 6:59 AM, Devin Heitmueller
> > <devin.heitmueller@gmail.com> wrote:
> > > On Thu, Dec 4, 2008 at 2:07 AM, Steve Fink <sphink@gmail.com> wrote:
> > >> After getting some help from this list, I ended up buying the
> > >> "Pinnacle PCTV HD Pro USB Stick"
> > >> <http://www.linuxtv.org/wiki/index.php/Pinnacle_PCTV_HD_Pro_Stick_(801e)>.
> > >> Unfortunately, it turned out to be the newer version, which appears to
> > >> only have DVB support (despite having a cx25843 chip for analog
> > >> decoding.) Is there any way to access to the raw frames coming from
> > >> the A/D converter?
> > >>
> > >> I've read up on the wiki, and I now understand what DVB stands for.
> > >> But in practice, it appears that DVB support means you'll get handed
> > >> encoded mpeg-2 frames, whereas if your device has v4l support, you can
> > >> get back decoded frames. I want raw frames. I don't want to watch TV;
> > >> I just want a stream of analog NTSC frames to get digitized and handed
> > >> over to me via USB. It appears to me that the only driver that
> > >> supports my device is a DVB driver, but that driver really is just a
> > >> DVB driver and so won't handle my analog input even though that A/D
> > >> converter is supported elsewhere for other drivers. Is that accurate,
> > >> or is there some way of using the dvb-usb stuff to get to the raw
> > >> digitized stream and start frame grabbing?
> > >>
> > >> It's also very possible that I'm completely confused about how
> > >> everything fits together. Hints appreciated.
> > >>
> > >> Thanks,
> > >> Steve
> > >>
> > >> (argh -- I wonder if I can return this damn tv stick...)
> > >
> > > No Steve, you're not confused.  I only implemented the digital
> > > ATSC/QAM support on the stick and not the analog support.  This was
> > > because the framework used for the dibcom driver doesn't currently
> > > have analog support, so it will be a significant amount of work.  If
> > > the dibcom framework gets analog support, then making this device work
> > > within that framework would be relatively simple.
> > >
> > > The LinuxTV wiki does properly reflect the status of the device.
> > >
> > > Devin
> > >
> > > --
> > > Devin J. Heitmueller
> > > http://www.devinheitmueller.com
> > > AIM: devinheitmueller
> > >
> > 
> > 
> E-Mail-Nachricht-Anlage
> > -------- Weitergeleitete Nachricht --------
> > Von: Ori Pessach <mail@oripessach.com>
> > An: video4linux-list@redhat.com
> > Betreff: bttv timeouts
> > Datum: Thu, 4 Dec 2008 09:57:55 -0800 (PST)
> > 
> > Hello,
> > 
> > I'm trying to diagnose an issue I'm seeing pretty frequently on multiple systems when using a generic, Kodicom 8800 clone capture card (with 8 bt878 chips.) After running for a while, the logs starts showing:
> > 
> > bttv2: timeout: drop=0 irq=24104841/44746684, risc=3787b03c, bits: VSYNC HSYNC RISCI
> > bttv2: reset, reinitialize
> > bttv3: timeout: drop=0 irq=27822078/51658940, risc=3785903c, bits: VSYNC HSYNC RISCI
> > bttv3: reset, reinitialize
> > 
> > 
> > over and over again, and the capture code times out when waiting for a frame. No frames are captured after that point.
> > 
> > Unloading and reloading the bttv module fixes that for a while. This is happening with kernel build 2.6.18-53.el5 on a CentOS system. I've seen references to this behavior on the web, but no solution or even speculation as to what might be causing this. Has anyone seen this before? Any ideas what could be the cause of this, or how to fix it?
> > 
> > Thanks,
> > 
> > --Ori Pessach
> > 
> E-Mail-Nachricht-Anlage
> > -------- Weitergeleitete Nachricht --------
> > Von: Devin Heitmueller <devin.heitmueller@gmail.com>
> > An: Steve Fink <sphink@gmail.com>
> > Kopie: video4linux-list@redhat.com
> > Betreff: Re: v4l support for "Pinnacle PCTV HD Pro USB Stick"
> > Datum: Thu, 4 Dec 2008 14:01:20 -0500
> > 
> > On Thu, Dec 4, 2008 at 1:09 PM, Steve Fink <sphink@gmail.com> wrote:
> > > Ok, thanks. I guess I'll try returning this one, then.
> > >
> > > I wonder if there's any way to apply pressure -- I mean, encouragement
> > > -- to manufacturers to either change model numbers or at least release
> > > serial number ranges or something along with specs for their hardware.
> > > The only reason I bought this device was because it had composite
> > > input and Linux support -- or at least, the earlier version with
> > > exactly the same description did.
> > >
> > > I suppose I could take a quick stab at making my app decode the mpeg
> > > frames, but it's really suboptimal for my setup (I am very sensitive
> > > to latency and CPU load.)
> > 
> > Just to be clear, the analog is not being converted into MPEG inside
> > the device.  Analog isn't supported at all.  When somebody finally
> > does get around to adding the device driver support, it will behave
> > just like any other v4l device (providing uncompressed video).
> > 
> > Devin
> > 
> E-Mail-Nachricht-Anlage
> > -------- Weitergeleitete Nachricht --------
> > Von: Nagy Gabor <nagygabor.info@gmail.com>
> > An: video4linux-list@redhat.com
> > Betreff: WinFast PalmTop DTV200H USB TvTuner
> > Datum: Thu, 4 Dec 2008 23:09:36 +0100
> > 
> > I've got a Leadtek
> > dtv200h<http://www.leadtek.com/eng/tv_tuner/overview.asp?lineid=6&pronameid=413>usb
> > tv tuner, and it got 4 chips:
> > 
> > EMPIA 2882<http://kepfeltoltes.hu/081204/EMPIA_2882_www.kepfeltoltes.hu_.jpg>
> > WJCE6353 <http://kepfeltoltes.hu/081204/WJCE6353_www.kepfeltoltes.hu_.jpg>
> > CX25843-24Z<http://kepfeltoltes.hu/081204/CX25843-242_www.kepfeltoltes.hu_.jpg>
> > XCEIVE XC3028LCQ<http://kepfeltoltes.hu/081204/XCEIVE_XC3028LCQ_www.kepfeltoltes.hu_.jpg>
> > front<http://kepfeltoltes.hu/081204/258590942front_www.kepfeltoltes.hu_.jpg>
> > back <http://kepfeltoltes.hu/081204/22578894back_www.kepfeltoltes.hu_.jpg>
> > 
> > distro: I use Debian Lenny
> > 2.6.26-1-amd64<http://cdimage.debian.org/cdimage/lenny_di_rc1/amd64/bt-cd/debian-testing-amd64-kde-CD-1.iso.torrent>-
> > "or anything you want" :D
> > 
> > lsusb:
> > Bus 007 Device 005: ID 0413:6f02 Leadtek Research, Inc.
> > 
> > dmesg:
> > [    2.787953] usb 7-1: new high speed USB device using ehci_hcd and address
> > 2
> > [    2.928702] usb 7-1: configuration #1 chosen from 1 choice
> > [    2.928702] usb 7-1: New USB device found, idVendor=0413, idProduct=6f02
> > [    2.928702] usb 7-1: New USB device strings: Mfr=0, Product=1,
> > SerialNumber=2
> > [    2.928702] usb 7-1: Product: WinFast PalmTop DTV200 H
> > [    2.928702] usb 7-1: SerialNumber: 2222
> > 
> > tvtime-scanner:
> > videoinput: Cannot open capture device /dev/video0: No such file or
> > directory
> > 
> > Does someone know, how to get it work under Linux?
> > Thank you!
> > 
> E-Mail-Nachricht-Anlage
> > -------- Weitergeleitete Nachricht --------
> > Von: Devin Heitmueller <devin.heitmueller@gmail.com>
> > An: Nagy Gabor <nagygabor.info@gmail.com>
> > Kopie: video4linux-list@redhat.com
> > Betreff: Re: WinFast PalmTop DTV200H USB TvTuner
> > Datum: Thu, 4 Dec 2008 17:15:07 -0500
> > 
> > As I told Gabor, this has been in my queue for a couple of weeks.  If
> > someone else wants to help out, the following needs to be done:
> > 
> > 1.  An entry needs to be added to em28xx-cards.c for the device,
> > setting the decoder field for the CX25843.
> > 
> > 2.  The windows trace he collected needs to be looked at and the GPIOs
> > need to be setup properly.
> > 
> > 3.  The xc3028L tuner needs to be configured in em28xx-cards.c -
> > *note* that this is the low power device and using the regular xc3028
> > profile could burn out the tuner (just look at the entry for the AMD
> > TV Wonder 600).
> > 
> > 4.  If you want to get digital support working, you need to adapt the
> > zarlink driver to work for the WJCE6353, and configure the entry in
> > the em28xx-dvb.c, providing the correct IF.
> > 
> > None of this is rocket science...
> > 
> > Devin
> > 
> > On Thu, Dec 4, 2008 at 5:09 PM, Nagy Gabor <nagygabor.info@gmail.com> wrote:
> > > I've got a Leadtek
> > > dtv200h<http://www.leadtek.com/eng/tv_tuner/overview.asp?lineid=6&pronameid=413>usb
> > > tv tuner, and it got 4 chips:
> > >
> > > EMPIA 2882<http://kepfeltoltes.hu/081204/EMPIA_2882_www.kepfeltoltes.hu_.jpg>
> > > WJCE6353 <http://kepfeltoltes.hu/081204/WJCE6353_www.kepfeltoltes.hu_.jpg>
> > > CX25843-24Z<http://kepfeltoltes.hu/081204/CX25843-242_www.kepfeltoltes.hu_.jpg>
> > > XCEIVE XC3028LCQ<http://kepfeltoltes.hu/081204/XCEIVE_XC3028LCQ_www.kepfeltoltes.hu_.jpg>
> > > front<http://kepfeltoltes.hu/081204/258590942front_www.kepfeltoltes.hu_.jpg>
> > > back <http://kepfeltoltes.hu/081204/22578894back_www.kepfeltoltes.hu_.jpg>
> > >
> > > distro: I use Debian Lenny
> > > 2.6.26-1-amd64<http://cdimage.debian.org/cdimage/lenny_di_rc1/amd64/bt-cd/debian-testing-amd64-kde-CD-1.iso.torrent>-
> > > "or anything you want" :D
> > >
> > > lsusb:
> > > Bus 007 Device 005: ID 0413:6f02 Leadtek Research, Inc.
> > >
> > > dmesg:
> > > [    2.787953] usb 7-1: new high speed USB device using ehci_hcd and address
> > > 2
> > > [    2.928702] usb 7-1: configuration #1 chosen from 1 choice
> > > [    2.928702] usb 7-1: New USB device found, idVendor=0413, idProduct=6f02
> > > [    2.928702] usb 7-1: New USB device strings: Mfr=0, Product=1,
> > > SerialNumber=2
> > > [    2.928702] usb 7-1: Product: WinFast PalmTop DTV200 H
> > > [    2.928702] usb 7-1: SerialNumber: 2222
> > >
> > > tvtime-scanner:
> > > videoinput: Cannot open capture device /dev/video0: No such file or
> > > directory
> > >
> > > Does someone know, how to get it work under Linux?
> > > Thank you!
> > >
> > > --
> > > Nagy Gabor
> > > http://szabadlinuxot.blogspot.com/
> > > --
> > > video4linux-list mailing list
> > > Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
> > > https://www.redhat.com/mailman/listinfo/video4linux-list
> > >
> > 
> > 
> > 
> E-Mail-Nachricht-Anlage
> > -------- Weitergeleitete Nachricht --------
> > Von: Chris Ruehl <v4l@xit.com.hk>
> > An: video4linux-list@redhat.com
> > Betreff: HVR-4000 need to switch 19/14V
> > Datum: Fri, 05 Dec 2008 12:41:34 +0800
> > 
> > Dear All,
> > 
> > I run a HVR 4000 in Hong Kong and try to make it run with ALIGA2 on a 
> > 'so called' cheap Sat in my rented flat.
> > Problem:
> > When I run the scan <myaligaconfig> no result come out.
> > I double check with my dreambox - its working
> > different between dreambox<>HVR4000 dreambox set 19V on the LNB HVR only 
> > 17,8V.
> > 
> > I google around a bit and found a thread where someone set a extra bit 
> > in the registry (win32) to make the
> > card set to 19/14V.
> > 
> > Can someone give me a hint which register affected here on the cx88??? 
> > code -  to make it possible for me
> > testing/patching.
> > 
> > thank  you.
> > Chris
> > 
> > 
> E-Mail-Nachricht-Anlage
> > -------- Weitergeleitete Nachricht --------
> > Von: Chris Ruehl <v4l@xit.com.hk>
> > An: video4linux-list@redhat.com
> > Betreff: Re: HVR-4000 need to switch 19/14V
> > Datum: Fri, 05 Dec 2008 12:56:58 +0800
> > 
> > Chris Ruehl wrote:
> > > Dear All,
> > >
> > > I run a HVR 4000 in Hong Kong and try to make it run with ALIGA2 on a 
> > > 'so called' cheap Sat in my rented flat.
> > > Problem:
> > > When I run the scan <myaligaconfig> no result come out.
> > > I double check with my dreambox - its working
> > > different between dreambox<>HVR4000 dreambox set 19V on the LNB HVR 
> > > only 17,8V.
> > >
> > > I google around a bit and found a thread where someone set a extra bit 
> > > in the registry (win32) to make the
> > > card set to 19/14V.
> > >
> > > Can someone give me a hint which register affected here on the cx88??? 
> > > code -  to make it possible for me
> > > testing/patching.
> > >
> > > thank  you.
> > > Chris
> > >
> > BTW: The info I found while search the WWW.
> > 
> > [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HCW88BDA\Parameters]
> > "LNBVoltage_Ctrl"=dword:00000005
> >    
> > ; Bit 0: (+1) - disables dynamic current limiting
> > ; Bit 1: (+2) - makes output voltage 13/18V instead of 14/19V
> > ; Bit 2: (+4) - prevents LNB power from being disabled
> > 
> > 
> > 
> E-Mail-Nachricht-Anlage
> > -------- Weitergeleitete Nachricht --------
> > Von: Erik Tollerud <erik.tollerud@gmail.com>
> > An: video4linux-list@redhat.com
> > Betreff: Pinnacle HDTV Ultimate USB
> > Datum: Thu, 4 Dec 2008 23:22:25 -0800
> > 
> > I noticed there was a post last month in the archives stating that the
> > drivers for the Pinnacle HDTV Ultimate were in the works... has there
> > been any news on this front?  (I'd be happy to help with testing, if
> > necessary).
> > 
> > 
> E-Mail-Nachricht-Anlage
> > -------- Weitergeleitete Nachricht --------
> > Von: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
> > An: Eric Miao <eric.y.miao@gmail.com>
> > Kopie: video4linux-list@redhat.com, ARM Linux
> > <linux-arm-kernel@lists.arm.linux.org.uk>
> > Betreff: Re: Fwd: [PATCH 2/2] V4L/DVB: pxa-camera: use memory mapped
> > IO access for camera (QCI) registers
> > Datum: Fri, 5 Dec 2008 09:46:48 +0100 (CET)
> > 
> > Hi Eric,
> > 
> > On Fri, 28 Nov 2008, Eric Miao wrote:
> > 
> > ...
> > 
> > > And again, I'm OK if you can do a trivial merge and I expect
> > > the final patch will be a bit different than this one.
> > 
> > below is a version of your patch that I'm going to push upstream. Just 
> > removed superfluous parenthesis and one trailing tab. Please confirm that 
> > that is ok with you.
> > 
> > Thanks
> > Guennadi
> > ---
> > Guennadi Liakhovetski, Ph.D.
> > Freelance Open-Source Software Developer
> > 
> > 
> > >From d6f4027008e14f707c2e887f1a5b3ecda8550a2b Mon Sep 17 00:00:00 2001
> > From: Eric Miao <eric.miao@marvell.com>
> > Date: Fri, 28 Nov 2008 09:29:56 +0800
> > Subject: [PATCH] V4L/DVB: pxa-camera: use memory mapped IO access for camera (QCI) registers
> > 
> > Signed-off-by: Eric Miao <eric.miao@marvell.com>
> > Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
> > ---
> >  drivers/media/video/pxa_camera.c |  204 ++++++++++++++++++++++++++++++--------
> >  drivers/media/video/pxa_camera.h |   95 ------------------
> >  2 files changed, 162 insertions(+), 137 deletions(-)
> >  delete mode 100644 drivers/media/video/pxa_camera.h
> > 
> > diff --git a/drivers/media/video/pxa_camera.c b/drivers/media/video/pxa_camera.c
> > index 330ceb6..7bfc30d 100644
> > --- a/drivers/media/video/pxa_camera.c
> > +++ b/drivers/media/video/pxa_camera.c
> > @@ -39,11 +39,104 @@
> >  #include <mach/pxa-regs.h>
> >  #include <mach/camera.h>
> >  
> > -#include "pxa_camera.h"
> > -
> >  #define PXA_CAM_VERSION_CODE KERNEL_VERSION(0, 0, 5)
> >  #define PXA_CAM_DRV_NAME "pxa27x-camera"
> >  
> > +/* Camera Interface */
> > +#define CICR0		0x0000
> > +#define CICR1		0x0004
> > +#define CICR2		0x0008
> > +#define CICR3		0x000C
> > +#define CICR4		0x0010
> > +#define CISR		0x0014
> > +#define CIFR		0x0018
> > +#define CITOR		0x001C
> > +#define CIBR0		0x0028
> > +#define CIBR1		0x0030
> > +#define CIBR2		0x0038
> > +
> > +#define CICR0_DMAEN	(1 << 31)	/* DMA request enable */
> > +#define CICR0_PAR_EN	(1 << 30)	/* Parity enable */
> > +#define CICR0_SL_CAP_EN	(1 << 29)	/* Capture enable for slave mode */
> > +#define CICR0_ENB	(1 << 28)	/* Camera interface enable */
> > +#define CICR0_DIS	(1 << 27)	/* Camera interface disable */
> > +#define CICR0_SIM	(0x7 << 24)	/* Sensor interface mode mask */
> > +#define CICR0_TOM	(1 << 9)	/* Time-out mask */
> > +#define CICR0_RDAVM	(1 << 8)	/* Receive-data-available mask */
> > +#define CICR0_FEM	(1 << 7)	/* FIFO-empty mask */
> > +#define CICR0_EOLM	(1 << 6)	/* End-of-line mask */
> > +#define CICR0_PERRM	(1 << 5)	/* Parity-error mask */
> > +#define CICR0_QDM	(1 << 4)	/* Quick-disable mask */
> > +#define CICR0_CDM	(1 << 3)	/* Disable-done mask */
> > +#define CICR0_SOFM	(1 << 2)	/* Start-of-frame mask */
> > +#define CICR0_EOFM	(1 << 1)	/* End-of-frame mask */
> > +#define CICR0_FOM	(1 << 0)	/* FIFO-overrun mask */
> > +
> > +#define CICR1_TBIT	(1 << 31)	/* Transparency bit */
> > +#define CICR1_RGBT_CONV	(0x3 << 29)	/* RGBT conversion mask */
> > +#define CICR1_PPL	(0x7ff << 15)	/* Pixels per line mask */
> > +#define CICR1_RGB_CONV	(0x7 << 12)	/* RGB conversion mask */
> > +#define CICR1_RGB_F	(1 << 11)	/* RGB format */
> > +#define CICR1_YCBCR_F	(1 << 10)	/* YCbCr format */
> > +#define CICR1_RGB_BPP	(0x7 << 7)	/* RGB bis per pixel mask */
> > +#define CICR1_RAW_BPP	(0x3 << 5)	/* Raw bis per pixel mask */
> > +#define CICR1_COLOR_SP	(0x3 << 3)	/* Color space mask */
> > +#define CICR1_DW	(0x7 << 0)	/* Data width mask */
> > +
> > +#define CICR2_BLW	(0xff << 24)	/* Beginning-of-line pixel clock
> > +					   wait count mask */
> > +#define CICR2_ELW	(0xff << 16)	/* End-of-line pixel clock
> > +					   wait count mask */
> > +#define CICR2_HSW	(0x3f << 10)	/* Horizontal sync pulse width mask */
> > +#define CICR2_BFPW	(0x3f << 3)	/* Beginning-of-frame pixel clock
> > +					   wait count mask */
> > +#define CICR2_FSW	(0x7 << 0)	/* Frame stabilization
> > +					   wait count mask */
> > +
> > +#define CICR3_BFW	(0xff << 24)	/* Beginning-of-frame line clock
> > +					   wait count mask */
> > +#define CICR3_EFW	(0xff << 16)	/* End-of-frame line clock
> > +					   wait count mask */
> > +#define CICR3_VSW	(0x3f << 10)	/* Vertical sync pulse width mask */
> > +#define CICR3_BFPW	(0x3f << 3)	/* Beginning-of-frame pixel clock
> > +					   wait count mask */
> > +#define CICR3_LPF	(0x7ff << 0)	/* Lines per frame mask */
> > +
> > +#define CICR4_MCLK_DLY	(0x3 << 24)	/* MCLK Data Capture Delay mask */
> > +#define CICR4_PCLK_EN	(1 << 23)	/* Pixel clock enable */
> > +#define CICR4_PCP	(1 << 22)	/* Pixel clock polarity */
> > +#define CICR4_HSP	(1 << 21)	/* Horizontal sync polarity */
> > +#define CICR4_VSP	(1 << 20)	/* Vertical sync polarity */
> > +#define CICR4_MCLK_EN	(1 << 19)	/* MCLK enable */
> > +#define CICR4_FR_RATE	(0x7 << 8)	/* Frame rate mask */
> > +#define CICR4_DIV	(0xff << 0)	/* Clock divisor mask */
> > +
> > +#define CISR_FTO	(1 << 15)	/* FIFO time-out */
> > +#define CISR_RDAV_2	(1 << 14)	/* Channel 2 receive data available */
> > +#define CISR_RDAV_1	(1 << 13)	/* Channel 1 receive data available */
> > +#define CISR_RDAV_0	(1 << 12)	/* Channel 0 receive data available */
> > +#define CISR_FEMPTY_2	(1 << 11)	/* Channel 2 FIFO empty */
> > +#define CISR_FEMPTY_1	(1 << 10)	/* Channel 1 FIFO empty */
> > +#define CISR_FEMPTY_0	(1 << 9)	/* Channel 0 FIFO empty */
> > +#define CISR_EOL	(1 << 8)	/* End of line */
> > +#define CISR_PAR_ERR	(1 << 7)	/* Parity error */
> > +#define CISR_CQD	(1 << 6)	/* Camera interface quick disable */
> > +#define CISR_CDD	(1 << 5)	/* Camera interface disable done */
> > +#define CISR_SOF	(1 << 4)	/* Start of frame */
> > +#define CISR_EOF	(1 << 3)	/* End of frame */
> > +#define CISR_IFO_2	(1 << 2)	/* FIFO overrun for Channel 2 */
> > +#define CISR_IFO_1	(1 << 1)	/* FIFO overrun for Channel 1 */
> > +#define CISR_IFO_0	(1 << 0)	/* FIFO overrun for Channel 0 */
> > +
> > +#define CIFR_FLVL2	(0x7f << 23)	/* FIFO 2 level mask */
> > +#define CIFR_FLVL1	(0x7f << 16)	/* FIFO 1 level mask */
> > +#define CIFR_FLVL0	(0xff << 8)	/* FIFO 0 level mask */
> > +#define CIFR_THL_0	(0x3 << 4)	/* Threshold Level for Channel 0 FIFO */
> > +#define CIFR_RESET_F	(1 << 3)	/* Reset input FIFOs */
> > +#define CIFR_FEN2	(1 << 2)	/* FIFO enable for channel 2 */
> > +#define CIFR_FEN1	(1 << 1)	/* FIFO enable for channel 1 */
> > +#define CIFR_FEN0	(1 << 0)	/* FIFO enable for channel 0 */
> > +
> >  #define CICR0_SIM_MP	(0 << 24)
> >  #define CICR0_SIM_SP	(1 << 24)
> >  #define CICR0_SIM_MS	(2 << 24)
> > @@ -387,7 +480,10 @@ static void pxa_videobuf_queue(struct videobuf_queue *vq,
> >  	active = pcdev->active;
> >  
> >  	if (!active) {
> > -		CIFR |= CIFR_RESET_F;
> > +		unsigned long cifr, cicr0;
> > +
> > +		cifr = __raw_readl(pcdev->base + CIFR) | CIFR_RESET_F;
> > +		__raw_writel(cifr, pcdev->base + CIFR);
> >  
> >  		for (i = 0; i < pcdev->channels; i++) {
> >  			DDADR(pcdev->dma_chans[i]) = buf->dmas[i].sg_dma;
> > @@ -396,7 +492,9 @@ static void pxa_videobuf_queue(struct videobuf_queue *vq,
> >  		}
> >  
> >  		pcdev->active = buf;
> > -		CICR0 |= CICR0_ENB;
> > +
> > +		cicr0 = __raw_readl(pcdev->base + CICR0) | CICR0_ENB;
> > +		__raw_writel(cicr0, pcdev->base + CICR0);
> >  	} else {
> >  		struct pxa_cam_dma *buf_dma;
> >  		struct pxa_cam_dma *act_dma;
> > @@ -480,6 +578,8 @@ static void pxa_camera_wakeup(struct pxa_camera_dev *pcdev,
> >  			      struct videobuf_buffer *vb,
> >  			      struct pxa_buffer *buf)
> >  {
> > +	unsigned long cicr0;
> > +
> >  	/* _init is used to debug races, see comment in pxa_camera_reqbufs() */
> >  	list_del_init(&vb->queue);
> >  	vb->state = VIDEOBUF_DONE;
> > @@ -492,7 +592,9 @@ static void pxa_camera_wakeup(struct pxa_camera_dev *pcdev,
> >  		DCSR(pcdev->dma_chans[0]) = 0;
> >  		DCSR(pcdev->dma_chans[1]) = 0;
> >  		DCSR(pcdev->dma_chans[2]) = 0;
> > -		CICR0 &= ~CICR0_ENB;
> > +
> > +		cicr0 = __raw_readl(pcdev->base + CICR0) & ~CICR0_ENB;
> > +		__raw_writel(cicr0, pcdev->base + CICR0);
> >  		return;
> >  	}
> >  
> > @@ -507,6 +609,7 @@ static void pxa_camera_dma_irq(int channel, struct pxa_camera_dev *pcdev,
> >  	unsigned long flags;
> >  	u32 status, camera_status, overrun;
> >  	struct videobuf_buffer *vb;
> > +	unsigned long cifr, cicr0;
> >  
> >  	spin_lock_irqsave(&pcdev->lock, flags);
> >  
> > @@ -529,22 +632,26 @@ static void pxa_camera_dma_irq(int channel, struct pxa_camera_dev *pcdev,
> >  		goto out;
> >  	}
> >  
> > -	camera_status = CISR;
> > +	camera_status = __raw_readl(pcdev->base + CISR);
> >  	overrun = CISR_IFO_0;
> >  	if (pcdev->channels == 3)
> >  		overrun |= CISR_IFO_1 | CISR_IFO_2;
> >  	if (camera_status & overrun) {
> >  		dev_dbg(pcdev->dev, "FIFO overrun! CISR: %x\n", camera_status);
> >  		/* Stop the Capture Interface */
> > -		CICR0 &= ~CICR0_ENB;
> > +		cicr0 = __raw_readl(pcdev->base + CICR0) & ~CICR0_ENB;
> > +		__raw_writel(cicr0, pcdev->base + CICR0);
> > +
> >  		/* Stop DMA */
> >  		DCSR(channel) = 0;
> >  		/* Reset the FIFOs */
> > -		CIFR |= CIFR_RESET_F;
> > +		cifr = __raw_readl(pcdev->base + CIFR) | CIFR_RESET_F;
> > +		__raw_writel(cifr, pcdev->base + CIFR);
> >  		/* Enable End-Of-Frame Interrupt */
> > -		CICR0 &= ~CICR0_EOFM;
> > +		cicr0 &= ~CICR0_EOFM;
> > +		__raw_writel(cicr0, pcdev->base + CICR0);
> >  		/* Restart the Capture Interface */
> > -		CICR0 |= CICR0_ENB;
> > +		__raw_writel(cicr0 | CICR0_ENB, pcdev->base + CICR0);
> >  		goto out;
> >  	}
> >  
> > @@ -631,7 +738,8 @@ static void pxa_camera_activate(struct pxa_camera_dev *pcdev)
> >  		pdata->init(pcdev->dev);
> >  	}
> >  
> > -	CICR0 = 0x3FF;   /* disable all interrupts */
> > +	/* disable all interrupts */
> > +	__raw_writel(0x3ff, pcdev->base + CICR0);
> >  
> >  	if (pcdev->platform_flags & PXA_CAMERA_PCLK_EN)
> >  		cicr4 |= CICR4_PCLK_EN;
> > @@ -644,7 +752,8 @@ static void pxa_camera_activate(struct pxa_camera_dev *pcdev)
> >  	if (pcdev->platform_flags & PXA_CAMERA_VSP)
> >  		cicr4 |= CICR4_VSP;
> >  
> > -	CICR4 = mclk_get_divisor(pcdev) | cicr4;
> > +	cicr4 |= mclk_get_divisor(pcdev);
> > +	__raw_writel(cicr4, pcdev->base + CICR4);
> >  
> >  	clk_enable(pcdev->clk);
> >  }
> > @@ -657,14 +766,15 @@ static void pxa_camera_deactivate(struct pxa_camera_dev *pcdev)
> >  static irqreturn_t pxa_camera_irq(int irq, void *data)
> >  {
> >  	struct pxa_camera_dev *pcdev = data;
> > -	unsigned int status = CISR;
> > +	unsigned long status, cicr0;
> >  
> > -	dev_dbg(pcdev->dev, "Camera interrupt status 0x%x\n", status);
> > +	status = __raw_readl(pcdev->base + CISR);
> > +	dev_dbg(pcdev->dev, "Camera interrupt status 0x%lx\n", status);
> >  
> >  	if (!status)
> >  		return IRQ_NONE;
> >  
> > -	CISR = status;
> > +	__raw_writel(status, pcdev->base + CISR);
> >  
> >  	if (status & CISR_EOF) {
> >  		int i;
> > @@ -673,7 +783,8 @@ static irqreturn_t pxa_camera_irq(int irq, void *data)
> >  				pcdev->active->dmas[i].sg_dma;
> >  			DCSR(pcdev->dma_chans[i]) = DCSR_RUN;
> >  		}
> > -		CICR0 |= CICR0_EOFM;
> > +		cicr0 = __raw_readl(pcdev->base + CICR0) | CICR0_EOFM;
> > +		__raw_writel(cicr0, pcdev->base + CICR0);
> >  	}
> >  
> >  	return IRQ_HANDLED;
> > @@ -720,7 +831,7 @@ static void pxa_camera_remove_device(struct soc_camera_device *icd)
> >  		 icd->devnum);
> >  
> >  	/* disable capture, disable interrupts */
> > -	CICR0 = 0x3ff;
> > +	__raw_writel(0x3ff, pcdev->base + CICR0);
> >  
> >  	/* Stop DMA engine */
> >  	DCSR(pcdev->dma_chans[0]) = 0;
> > @@ -781,7 +892,7 @@ static int pxa_camera_set_bus_param(struct soc_camera_device *icd, __u32 pixfmt)
> >  		to_soc_camera_host(icd->dev.parent);
> >  	struct pxa_camera_dev *pcdev = ici->priv;
> >  	unsigned long dw, bpp, bus_flags, camera_flags, common_flags;
> > -	u32 cicr0, cicr1, cicr4 = 0;
> > +	u32 cicr0, cicr1, cicr2, cicr3, cicr4 = 0;
> >  	int ret = test_platform_param(pcdev, icd->buswidth, &bus_flags);
> >  
> >  	if (ret < 0)
> > @@ -854,9 +965,9 @@ static int pxa_camera_set_bus_param(struct soc_camera_device *icd, __u32 pixfmt)
> >  	if (common_flags & SOCAM_VSYNC_ACTIVE_LOW)
> >  		cicr4 |= CICR4_VSP;
> >  
> > -	cicr0 = CICR0;
> > +	cicr0 = __raw_readl(pcdev->base + CICR0);
> >  	if (cicr0 & CICR0_ENB)
> > -		CICR0 = cicr0 & ~CICR0_ENB;
> > +		__raw_writel(cicr0 & ~CICR0_ENB, pcdev->base + CICR0);
> >  
> >  	cicr1 = CICR1_PPL_VAL(icd->width - 1) | bpp | dw;
> >  
> > @@ -886,16 +997,21 @@ static int pxa_camera_set_bus_param(struct soc_camera_device *icd, __u32 pixfmt)
> >  		break;
> >  	}
> >  
> > -	CICR1 = cicr1;
> > -	CICR2 = 0;
> > -	CICR3 = CICR3_LPF_VAL(icd->height - 1) |
> > +	cicr2 = 0;
> > +	cicr3 = CICR3_LPF_VAL(icd->height - 1) |
> >  		CICR3_BFW_VAL(min((unsigned short)255, icd->y_skip_top));
> > -	CICR4 = mclk_get_divisor(pcdev) | cicr4;
> > +	cicr4 |= mclk_get_divisor(pcdev);
> > +
> > +	__raw_writel(cicr1, pcdev->base + CICR1);
> > +	__raw_writel(cicr2, pcdev->base + CICR2);
> > +	__raw_writel(cicr3, pcdev->base + CICR3);
> > +	__raw_writel(cicr4, pcdev->base + CICR4);
> >  
> >  	/* CIF interrupts are not used, only DMA */
> > -	CICR0 = (pcdev->platform_flags & PXA_CAMERA_MASTER ?
> > -		 CICR0_SIM_MP : (CICR0_SL_CAP_EN | CICR0_SIM_SP)) |
> > -		CICR0_DMAEN | CICR0_IRQ_MASK | (cicr0 & CICR0_ENB);
> > +	cicr0 = (cicr0 & CICR0_ENB) | (pcdev->platform_flags & PXA_CAMERA_MASTER ?
> > +		CICR0_SIM_MP : (CICR0_SL_CAP_EN | CICR0_SIM_SP));
> > +	cicr0 |= CICR0_DMAEN | CICR0_IRQ_MASK;
> > +	__raw_writel(cicr0, pcdev->base + CICR0);
> >  
> >  	return 0;
> >  }
> > @@ -1141,11 +1257,11 @@ static int pxa_camera_suspend(struct soc_camera_device *icd, pm_message_t state)
> >  	struct pxa_camera_dev *pcdev = ici->priv;
> >  	int i = 0, ret = 0;
> >  
> > -	pcdev->save_cicr[i++] = CICR0;
> > -	pcdev->save_cicr[i++] = CICR1;
> > -	pcdev->save_cicr[i++] = CICR2;
> > -	pcdev->save_cicr[i++] = CICR3;
> > -	pcdev->save_cicr[i++] = CICR4;
> > +	pcdev->save_cicr[i++] = __raw_readl(pcdev->base + CICR0);
> > +	pcdev->save_cicr[i++] = __raw_readl(pcdev->base + CICR1);
> > +	pcdev->save_cicr[i++] = __raw_readl(pcdev->base + CICR2);
> > +	pcdev->save_cicr[i++] = __raw_readl(pcdev->base + CICR3);
> > +	pcdev->save_cicr[i++] = __raw_readl(pcdev->base + CICR4);
> >  
> >  	if ((pcdev->icd) && (pcdev->icd->ops->suspend))
> >  		ret = pcdev->icd->ops->suspend(pcdev->icd, state);
> > @@ -1164,23 +1280,27 @@ static int pxa_camera_resume(struct soc_camera_device *icd)
> >  	DRCMR(69) = pcdev->dma_chans[1] | DRCMR_MAPVLD;
> >  	DRCMR(70) = pcdev->dma_chans[2] | DRCMR_MAPVLD;
> >  
> > -	CICR0 = pcdev->save_cicr[i++] & ~CICR0_ENB;
> > -	CICR1 = pcdev->save_cicr[i++];
> > -	CICR2 = pcdev->save_cicr[i++];
> > -	CICR3 = pcdev->save_cicr[i++];
> > -	CICR4 = pcdev->save_cicr[i++];
> > +	__raw_writel(pcdev->save_cicr[i++] & ~CICR0_ENB, pcdev->base + CICR0);
> > +	__raw_writel(pcdev->save_cicr[i++], pcdev->base + CICR1);
> > +	__raw_writel(pcdev->save_cicr[i++], pcdev->base + CICR2);
> > +	__raw_writel(pcdev->save_cicr[i++], pcdev->base + CICR3);
> > +	__raw_writel(pcdev->save_cicr[i++], pcdev->base + CICR4);
> >  
> >  	if ((pcdev->icd) && (pcdev->icd->ops->resume))
> >  		ret = pcdev->icd->ops->resume(pcdev->icd);
> >  
> >  	/* Restart frame capture if active buffer exists */
> >  	if (!ret && pcdev->active) {
> > +		unsigned long cifr, cicr0;
> > +
> >  		/* Reset the FIFOs */
> > -		CIFR |= CIFR_RESET_F;
> > -		/* Enable End-Of-Frame Interrupt */
> > -		CICR0 &= ~CICR0_EOFM;
> > -		/* Restart the Capture Interface */
> > -		CICR0 |= CICR0_ENB;
> > +		cifr = __raw_readl(pcdev->base + CIFR) | CIFR_RESET_F;
> > +		__raw_writel(cifr, pcdev->base + CIFR);
> > +
> > +		cicr0 = __raw_readl(pcdev->base + CICR0);
> > +		cicr0 &= ~CICR0_EOFM;	/* Enable End-Of-Frame Interrupt */
> > +		cicr0 |= CICR0_ENB;	/* Restart the Capture Interface */
> > +		__raw_writel(cicr0, pcdev->base + CICR0);
> >  	}
> >  
> >  	return ret;
> > diff --git a/drivers/media/video/pxa_camera.h b/drivers/media/video/pxa_camera.h
> > deleted file mode 100644
> > index 89cbfc9..0000000
> > --- a/drivers/media/video/pxa_camera.h
> > +++ /dev/null
> > @@ -1,95 +0,0 @@
> > -/* Camera Interface */
> > -#define CICR0		__REG(0x50000000)
> > -#define CICR1		__REG(0x50000004)
> > -#define CICR2		__REG(0x50000008)
> > -#define CICR3		__REG(0x5000000C)
> > -#define CICR4		__REG(0x50000010)
> > -#define CISR		__REG(0x50000014)
> > -#define CIFR		__REG(0x50000018)
> > -#define CITOR		__REG(0x5000001C)
> > -#define CIBR0		__REG(0x50000028)
> > -#define CIBR1		__REG(0x50000030)
> > -#define CIBR2		__REG(0x50000038)
> > -
> > -#define CICR0_DMAEN	(1 << 31)	/* DMA request enable */
> > -#define CICR0_PAR_EN	(1 << 30)	/* Parity enable */
> > -#define CICR0_SL_CAP_EN	(1 << 29)	/* Capture enable for slave mode */
> > -#define CICR0_ENB	(1 << 28)	/* Camera interface enable */
> > -#define CICR0_DIS	(1 << 27)	/* Camera interface disable */
> > -#define CICR0_SIM	(0x7 << 24)	/* Sensor interface mode mask */
> > -#define CICR0_TOM	(1 << 9)	/* Time-out mask */
> > -#define CICR0_RDAVM	(1 << 8)	/* Receive-data-available mask */
> > -#define CICR0_FEM	(1 << 7)	/* FIFO-empty mask */
> > -#define CICR0_EOLM	(1 << 6)	/* End-of-line mask */
> > -#define CICR0_PERRM	(1 << 5)	/* Parity-error mask */
> > -#define CICR0_QDM	(1 << 4)	/* Quick-disable mask */
> > -#define CICR0_CDM	(1 << 3)	/* Disable-done mask */
> > -#define CICR0_SOFM	(1 << 2)	/* Start-of-frame mask */
> > -#define CICR0_EOFM	(1 << 1)	/* End-of-frame mask */
> > -#define CICR0_FOM	(1 << 0)	/* FIFO-overrun mask */
> > -
> > -#define CICR1_TBIT	(1 << 31)	/* Transparency bit */
> > -#define CICR1_RGBT_CONV	(0x3 << 29)	/* RGBT conversion mask */
> > -#define CICR1_PPL	(0x7ff << 15)	/* Pixels per line mask */
> > -#define CICR1_RGB_CONV	(0x7 << 12)	/* RGB conversion mask */
> > -#define CICR1_RGB_F	(1 << 11)	/* RGB format */
> > -#define CICR1_YCBCR_F	(1 << 10)	/* YCbCr format */
> > -#define CICR1_RGB_BPP	(0x7 << 7)	/* RGB bis per pixel mask */
> > -#define CICR1_RAW_BPP	(0x3 << 5)	/* Raw bis per pixel mask */
> > -#define CICR1_COLOR_SP	(0x3 << 3)	/* Color space mask */
> > -#define CICR1_DW	(0x7 << 0)	/* Data width mask */
> > -
> > -#define CICR2_BLW	(0xff << 24)	/* Beginning-of-line pixel clock
> > -					   wait count mask */
> > -#define CICR2_ELW	(0xff << 16)	/* End-of-line pixel clock
> > -					   wait count mask */
> > -#define CICR2_HSW	(0x3f << 10)	/* Horizontal sync pulse width mask */
> > -#define CICR2_BFPW	(0x3f << 3)	/* Beginning-of-frame pixel clock
> > -					   wait count mask */
> > -#define CICR2_FSW	(0x7 << 0)	/* Frame stabilization
> > -					   wait count mask */
> > -
> > -#define CICR3_BFW	(0xff << 24)	/* Beginning-of-frame line clock
> > -					   wait count mask */
> > -#define CICR3_EFW	(0xff << 16)	/* End-of-frame line clock
> > -					   wait count mask */
> > -#define CICR3_VSW	(0x3f << 10)	/* Vertical sync pulse width mask */
> > -#define CICR3_BFPW	(0x3f << 3)	/* Beginning-of-frame pixel clock
> > -					   wait count mask */
> > -#define CICR3_LPF	(0x7ff << 0)	/* Lines per frame mask */
> > -
> > -#define CICR4_MCLK_DLY	(0x3 << 24)	/* MCLK Data Capture Delay mask */
> > -#define CICR4_PCLK_EN	(1 << 23)	/* Pixel clock enable */
> > -#define CICR4_PCP	(1 << 22)	/* Pixel clock polarity */
> > -#define CICR4_HSP	(1 << 21)	/* Horizontal sync polarity */
> > -#define CICR4_VSP	(1 << 20)	/* Vertical sync polarity */
> > -#define CICR4_MCLK_EN	(1 << 19)	/* MCLK enable */
> > -#define CICR4_FR_RATE	(0x7 << 8)	/* Frame rate mask */
> > -#define CICR4_DIV	(0xff << 0)	/* Clock divisor mask */
> > -
> > -#define CISR_FTO	(1 << 15)	/* FIFO time-out */
> > -#define CISR_RDAV_2	(1 << 14)	/* Channel 2 receive data available */
> > -#define CISR_RDAV_1	(1 << 13)	/* Channel 1 receive data available */
> > -#define CISR_RDAV_0	(1 << 12)	/* Channel 0 receive data available */
> > -#define CISR_FEMPTY_2	(1 << 11)	/* Channel 2 FIFO empty */
> > -#define CISR_FEMPTY_1	(1 << 10)	/* Channel 1 FIFO empty */
> > -#define CISR_FEMPTY_0	(1 << 9)	/* Channel 0 FIFO empty */
> > -#define CISR_EOL	(1 << 8)	/* End of line */
> > -#define CISR_PAR_ERR	(1 << 7)	/* Parity error */
> > -#define CISR_CQD	(1 << 6)	/* Camera interface quick disable */
> > -#define CISR_CDD	(1 << 5)	/* Camera interface disable done */
> > -#define CISR_SOF	(1 << 4)	/* Start of frame */
> > -#define CISR_EOF	(1 << 3)	/* End of frame */
> > -#define CISR_IFO_2	(1 << 2)	/* FIFO overrun for Channel 2 */
> > -#define CISR_IFO_1	(1 << 1)	/* FIFO overrun for Channel 1 */
> > -#define CISR_IFO_0	(1 << 0)	/* FIFO overrun for Channel 0 */
> > -
> > -#define CIFR_FLVL2	(0x7f << 23)	/* FIFO 2 level mask */
> > -#define CIFR_FLVL1	(0x7f << 16)	/* FIFO 1 level mask */
> > -#define CIFR_FLVL0	(0xff << 8)	/* FIFO 0 level mask */
> > -#define CIFR_THL_0	(0x3 << 4)	/* Threshold Level for Channel 0 FIFO */
> > -#define CIFR_RESET_F	(1 << 3)	/* Reset input FIFOs */
> > -#define CIFR_FEN2	(1 << 2)	/* FIFO enable for channel 2 */
> > -#define CIFR_FEN1	(1 << 1)	/* FIFO enable for channel 1 */
> > -#define CIFR_FEN0	(1 << 0)	/* FIFO enable for channel 0 */
> > -
> E-Mail-Nachricht-Anlage
> > -------- Weitergeleitete Nachricht --------
> > Von: Eric Miao <eric.y.miao@gmail.com>
> > An: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
> > Kopie: video4linux-list@redhat.com, ARM Linux
> > <linux-arm-kernel@lists.arm.linux.org.uk>
> > Betreff: Re: Fwd: [PATCH 2/2] V4L/DVB: pxa-camera: use memory mapped
> > IO access for camera (QCI) registers
> > Datum: Fri, 5 Dec 2008 17:38:29 +0800
> > 
> > On Fri, Dec 5, 2008 at 4:46 PM, Guennadi Liakhovetski
> > <g.liakhovetski@gmx.de> wrote:
> > > Hi Eric,
> > >
> > > On Fri, 28 Nov 2008, Eric Miao wrote:
> > >
> > > ...
> > >
> > >> And again, I'm OK if you can do a trivial merge and I expect
> > >> the final patch will be a bit different than this one.
> > >
> > > below is a version of your patch that I'm going to push upstream. Just
> > > removed superfluous parenthesis and one trailing tab. Please confirm that
> > > that is ok with you.
> > >
> > 
> > Looks fine, thanks.
> > 
> > 
> E-Mail-Nachricht-Anlage
> > -------- Weitergeleitete Nachricht --------
> > Von: Chris Ruehl <v4l@xit.com.hk>
> > An: video4linux-list@redhat.com
> > Betreff: hg - cx88-alsa brocken with 2.6.27
> > Datum: Fri, 05 Dec 2008 19:38:35 +0800
> > 
> > Hallo,
> > 
> > I try to load the cx88-alsa with my HVR4000 but with the 2.6.27.x I got 
> > a null-pointer assignment
> > - I had a look in the code but not see any serious.
> > 
> > I got 2 sound cards working in my system Xonar D2x and Intel HD (both 
> > working)
> > 
> > here is the dump.   Sorry I have not enough time for a closer look - but 
> > ask me if more infos needed.
> > 
> > cheers
> > Chris
> > 
> > 
> > cx2388x alsa driver version 0.0.6 loaded
> > cx88_audio 0000:11:0c.1: PCI INT A -> GSI 20 (level, low) -> IRQ 20
> > BUG: unable to handle kernel NULL pointer dereference at 00000000
> > IP: [<f91698a7>] :cx88_alsa:cx88_audio_initdev+0xeb/0x309
> > *pdpt = 0000000035136001 *pde = 0000000000000000
> > Oops: 0002 [#1] SMP
> > Modules linked in: cx88_alsa(+) wmi pci_slot iptable_filter ip_tables 
> > x_tables cx22702 isl6421 cx24116 cx88_dvb cx88_vp3054_i2c wm8775 
> > tuner_simple tuner_types tda9887 tda8290 tuner snd_virtuoso 
> > snd_oxygen_lib snd_hda_intel snd_pcm_oss snd_mixer_oss snd_pcm 
> > snd_page_alloc snd_mpu401_uart snd_hwdep snd_seq_dummy snd_seq_oss 
> > cx8802 snd_seq_midi cx8800 cx88xx snd_seq_midi_event ir_common 
> > i2c_algo_bit videodev snd_seq tveeprom v4l1_compat videobuf_dvb 
> > snd_rawmidi compat_ioctl32 dvb_core snd_timer v4l2_common snd_seq_device 
> > btcx_risc nvidia(P) videobuf_dma_sg videobuf_core snd i2c_core e1000e 
> > dm_mirror dm_log dm_snapshot fuse
> > 
> > Pid: 5709, comm: modprobe Tainted: P          (2.6.27.7 #4)
> > EIP: 0060:[<f91698a7>] EFLAGS: 00010202 CPU: 0
> > EIP is at cx88_audio_initdev+0xeb/0x309 [cx88_alsa]
> > EAX: f792f010 EBX: f792f000 ECX: 00000000 EDX: ffffffff
> > ESI: f51c0c00 EDI: 00000000 EBP: f78ee800 ESP: f4da3e9c
> >  DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
> > Process modprobe (pid: 5709, ti=f4da2000 task=f6b52680 task.ti=f4da2000)
> > Stack: f792f010 f78ee8d4 c02340a9 f916b084 f916b050 f78ee800 f916b084 
> > c023460f
> >        f78ee85c 00000000 f916b084 c028a6a2 f78ee85c f78ee918 f916b084 
> > c028a76b
> >        00000000 00000000 c040ab24 c028a123 f783593c f7835940 f78ee8b0 
> > 00000000
> > Call Trace:
> >  [<c02340a9>] pci_match_device+0x13/0x8b
> >  [<c023460f>] pci_device_probe+0x36/0x55
> >  [<c028a6a2>] driver_probe_device+0x9d/0x12f
> >  [<c028a76b>] __driver_attach+0x37/0x55
> >  [<c028a123>] bus_for_each_dev+0x35/0x5c
> >  [<c028a555>] driver_attach+0x11/0x13
> >  [<c028a734>] __driver_attach+0x0/0x55
> >  [<c0289ba6>] bus_add_driver+0x91/0x1a7
> >  [<f9169772>] cx88_audio_init+0x0/0x2a [cx88_alsa]
> >  [<c028a8d1>] driver_register+0x7d/0xd6
> >  [<f9169772>] cx88_audio_init+0x0/0x2a [cx88_alsa]
> >  [<f9169772>] cx88_audio_init+0x0/0x2a [cx88_alsa]
> >  [<c02347d1>] __pci_register_driver+0x3c/0x67
> >  [<c010111f>] _stext+0x37/0xfb
> >  [<c013d07e>] sys_init_module+0x87/0x174
> >  [<c0102fc5>] sysenter_do_call+0x12/0x25
> >  =======================
> > Code: 04 24 75 27 50 8b 07 83 c0 10 50 68 a4 9c 16 f9 e8 63 f3 1d c7 89 
> > d8 89 ea bb fb ff ff ff e8 e8 c9 b2 ff 83 c4 0c e9 14 02 00 00 <89> 1f 
> > 89 77 4c 89 6f 44 c7 47 48 ff ff ff ff c7 47 50 00 00 00
> > EIP: [<f91698a7>] cx88_audio_initdev+0xeb/0x309 [cx88_alsa] SS:ESP 
> > 0068:f4da3e9c
> > ---[ end trace e9e859edcab46f62 ]---
> > 
> > 
> E-Mail-Nachricht-Anlage
> > -------- Weitergeleitete Nachricht --------
> > Von: hvaibhav@ti.com
> > An: video4linux-list@redhat.com
> > Kopie: davinci-linux-open-source-bounces@linux.davincidsp.com,
> > Karicheri Muralidharan <m-karicheri2@ti.com>,
> > linux-omap@vger.kernel.org
> > Betreff: [PATCH 1/2] Addition of Set Routing ioctl support[V5]
> > Datum: Fri, 5 Dec 2008 18:24:02 +0530
> > 
> > From: Vaibhav Hiremath <hvaibhav@ti.com>
> > 
> > Fixed review comments:
> > 
> > g_routing:
> >         Removed g_routing, since it was not required
> >         at decoder level. Same can be handled at master
> >         level.
> > 
> > Signed-off-by: Brijesh Jadav <brijesh.j@ti.com>
> > Signed-off-by: Hardik Shah <hardik.shah@ti.com>
> > Signed-off-by: Manjunath Hadli <mrh@ti.com>
> > Signed-off-by: R Sivaraj <sivaraj@ti.com>
> > Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
> > Signed-off-by: Karicheri Muralidharan <m-karicheri2@ti.com>
> > ---
> >  include/media/v4l2-int-device.h |    6 ++++++
> >  1 files changed, 6 insertions(+), 0 deletions(-)
> > 
> > diff --git a/include/media/v4l2-int-device.h b/include/media/v4l2-int-device.h
> > index 9c2df41..ecda3c7 100644
> > --- a/include/media/v4l2-int-device.h
> > +++ b/include/media/v4l2-int-device.h
> > @@ -183,6 +183,9 @@ enum v4l2_int_ioctl_num {
> >  	vidioc_int_s_crop_num,
> >  	vidioc_int_g_parm_num,
> >  	vidioc_int_s_parm_num,
> > +	vidioc_int_querystd_num,
> > +	vidioc_int_s_std_num,
> > +	vidioc_int_s_video_routing_num,
> > 
> >  	/*
> >  	 *
> > @@ -284,6 +287,9 @@ V4L2_INT_WRAPPER_1(g_crop, struct v4l2_crop, *);
> >  V4L2_INT_WRAPPER_1(s_crop, struct v4l2_crop, *);
> >  V4L2_INT_WRAPPER_1(g_parm, struct v4l2_streamparm, *);
> >  V4L2_INT_WRAPPER_1(s_parm, struct v4l2_streamparm, *);
> > +V4L2_INT_WRAPPER_1(querystd, v4l2_std_id, *);
> > +V4L2_INT_WRAPPER_1(s_std, v4l2_std_id, *);
> > +V4L2_INT_WRAPPER_1(s_video_routing, struct v4l2_routing, *);
> > 
> >  V4L2_INT_WRAPPER_0(dev_init);
> >  V4L2_INT_WRAPPER_0(dev_exit);
> > --
> > 1.5.6
> > 
> > 
> E-Mail-Nachricht-Anlage
> > -------- Weitergeleitete Nachricht --------
> > Von: hvaibhav@ti.com
> > An: video4linux-list@redhat.com
> > Kopie: davinci-linux-open-source-bounces@linux.davincidsp.com,
> > Karicheri Muralidharan <m-karicheri2@ti.com>,
> > linux-omap@vger.kernel.org
> > Betreff: [PATCH 2/2] TVP514x Driver with Review comments fixed [V5]
> > Datum: Fri, 5 Dec 2008 18:24:22 +0530
> > 
> > From: Vaibhav Hiremath <hvaibhav@ti.com>
> > 
> > I have fixed all the review comments received so far.
> > Here are the details -
> > 
> > FIXES:
> >     g_routing:
> >         Removed, now master driver will handle the call
> > 	for G_INPUT.
> > 
> >     input related platform data:
> >         Removed dependancy from platform driver for input
> > 	configuration. Now the only information like,
> > 	clk_polarity, hs/vs_polarity which are one time
> > 	and interface dependent data comes from platform
> > 	driver.
> >         Master driver includes tvp514x.h file and pass
> >         v4l2_routing information to TVP.
> > 
> >     query/set/get control:
> >         Removed all custom handling of control params, and
> > 	replaced with standard API provided by V4L2.
> > 
> >     tvp514x_decoder and some structures related to TVP:
> >         Moved to tvp514xx.c file.
> > 
> >     TVP init seq:
> >         Made them const, as suggested.
> > 
> >     __init function:
> >         Removed error check for i2c_add_driver call.
> > 
> > Signed-off-by: Brijesh Jadav <brijesh.j@ti.com>
> > Signed-off-by: Hardik Shah <hardik.shah@ti.com>
> > Signed-off-by: Manjunath Hadli <mrh@ti.com>
> > Signed-off-by: R Sivaraj <sivaraj@ti.com>
> > Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
> > Signed-off-by: Karicheri Muralidharan <m-karicheri2@ti.com>
> > ---
> >  drivers/media/video/Kconfig        |   11 +
> >  drivers/media/video/Makefile       |    1 +
> >  drivers/media/video/tvp514x.c      | 1569 ++++++++++++++++++++++++++++++++++++
> >  drivers/media/video/tvp514x_regs.h |  297 +++++++
> >  include/media/tvp514x.h            |  118 +++
> >  5 files changed, 1996 insertions(+), 0 deletions(-)
> >  create mode 100755 drivers/media/video/tvp514x.c
> >  create mode 100644 drivers/media/video/tvp514x_regs.h
> >  create mode 100755 include/media/tvp514x.h
> > 
> > diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig
> > index 47102c2..2e5dc3e 100644
> > --- a/drivers/media/video/Kconfig
> > +++ b/drivers/media/video/Kconfig
> > @@ -361,6 +361,17 @@ config VIDEO_SAA7191
> >  	  To compile this driver as a module, choose M here: the
> >  	  module will be called saa7191.
> > 
> > +config VIDEO_TVP514X
> > +	tristate "Texas Instruments TVP514x video decoder"
> > +	depends on VIDEO_V4L2 && I2C
> > +	---help---
> > +	  This is a Video4Linux2 sensor-level driver for the TI TVP5146/47
> > +	  decoder. It is currently working with the TI OMAP3 camera
> > +	  controller.
> > +
> > +	  To compile this driver as a module, choose M here: the
> > +	  module will be called tvp514x.
> > +
> >  config VIDEO_TVP5150
> >  	tristate "Texas Instruments TVP5150 video decoder"
> >  	depends on VIDEO_V4L2 && I2C
> > diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile
> > index 16962f3..cdbbf38 100644
> > --- a/drivers/media/video/Makefile
> > +++ b/drivers/media/video/Makefile
> > @@ -66,6 +66,7 @@ obj-$(CONFIG_VIDEO_CX88) += cx88/
> >  obj-$(CONFIG_VIDEO_EM28XX) += em28xx/
> >  obj-$(CONFIG_VIDEO_USBVISION) += usbvision/
> >  obj-$(CONFIG_VIDEO_TVP5150) += tvp5150.o
> > +obj-$(CONFIG_VIDEO_TVP514X) += tvp514x.o
> >  obj-$(CONFIG_VIDEO_PVRUSB2) += pvrusb2/
> >  obj-$(CONFIG_VIDEO_MSP3400) += msp3400.o
> >  obj-$(CONFIG_VIDEO_CS5345) += cs5345.o
> > diff --git a/drivers/media/video/tvp514x.c b/drivers/media/video/tvp514x.c
> > new file mode 100755
> > index 0000000..525b1c7
> > --- /dev/null
> > +++ b/drivers/media/video/tvp514x.c
> > @@ -0,0 +1,1569 @@
> > +/*
> > + * drivers/media/video/tvp514x.c
> > + *
> > + * TI TVP5146/47 decoder driver
> > + *
> > + * Copyright (C) 2008 Texas Instruments Inc
> > + * Author: Vaibhav Hiremath <hvaibhav@ti.com>
> > + *
> > + * Contributors:
> > + *     Sivaraj R <sivaraj@ti.com>
> > + *     Brijesh R Jadav <brijesh.j@ti.com>
> > + *     Hardik Shah <hardik.shah@ti.com>
> > + *     Manjunath Hadli <mrh@ti.com>
> > + *     Karicheri Muralidharan <m-karicheri2@ti.com>
> > + *
> > + * This package is free software; you can redistribute it and/or modify
> > + * it under the terms of the GNU General Public License version 2 as
> > + * published by the Free Software Foundation.
> > + *
> > + * This program is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > + * GNU General Public License for more details.
> > + *
> > + * You should have received a copy of the GNU General Public License
> > + * along with this program; if not, write to the Free Software
> > + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
> > + *
> > + */
> > +
> > +#include <linux/i2c.h>
> > +#include <linux/delay.h>
> > +#include <linux/videodev2.h>
> > +#include <media/v4l2-int-device.h>
> > +#include <media/tvp514x.h>
> > +
> > +#include "tvp514x_regs.h"
> > +
> > +/* Module Name */
> > +#define TVP514X_MODULE_NAME		"tvp514x"
> > +
> > +/* Private macros for TVP */
> > +#define I2C_RETRY_COUNT                 (5)
> > +#define LOCK_RETRY_COUNT                (5)
> > +#define LOCK_RETRY_DELAY                (200)
> > +
> > +/* Debug functions */
> > +static int debug;
> > +module_param(debug, bool, 0644);
> > +MODULE_PARM_DESC(debug, "Debug level (0-1)");
> > +
> > +#define dump_reg(client, reg, val)				\
> > +	do {							\
> > +		val = tvp514x_read_reg(client, reg);		\
> > +		v4l_info(client, "Reg(0x%.2X): 0x%.2X\n", reg, val); \
> > +	} while (0)
> > +
> > +/**
> > + * enum tvp514x_std - enum for supported standards
> > + */
> > +enum tvp514x_std {
> > +	STD_NTSC_MJ = 0,
> > +	STD_PAL_BDGHIN,
> > +	STD_INVALID
> > +};
> > +
> > +/**
> > + * enum tvp514x_state - enum for different decoder states
> > + */
> > +enum tvp514x_state {
> > +	STATE_NOT_DETECTED,
> > +	STATE_DETECTED
> > +};
> > +
> > +/**
> > + * struct tvp514x_std_info - Structure to store standard informations
> > + * @width: Line width in pixels
> > + * @height:Number of active lines
> > + * @video_std: Value to write in REG_VIDEO_STD register
> > + * @standard: v4l2 standard structure information
> > + */
> > +struct tvp514x_std_info {
> > +	unsigned long width;
> > +	unsigned long height;
> > +	u8 video_std;
> > +	struct v4l2_standard standard;
> > +};
> > +
> > +/**
> > + * struct tvp514x_decoded - TVP5146/47 decoder object
> > + * @v4l2_int_device: Slave handle
> > + * @pdata: Board specific
> > + * @client: I2C client data
> > + * @id: Entry from I2C table
> > + * @ver: Chip version
> > + * @state: TVP5146/47 decoder state - detected or not-detected
> > + * @pix: Current pixel format
> > + * @num_fmts: Number of formats
> > + * @fmt_list: Format list
> > + * @current_std: Current standard
> > + * @num_stds: Number of standards
> > + * @std_list: Standards list
> > + * @route: input and output routing at chip level
> > + */
> > +struct tvp514x_decoder {
> > +	struct v4l2_int_device *v4l2_int_device;
> > +	const struct tvp514x_platform_data *pdata;
> > +	struct i2c_client *client;
> > +
> > +	struct i2c_device_id *id;
> > +
> > +	int ver;
> > +	enum tvp514x_state state;
> > +
> > +	struct v4l2_pix_format pix;
> > +	int num_fmts;
> > +	const struct v4l2_fmtdesc *fmt_list;
> > +
> > +	enum tvp514x_std current_std;
> > +	int num_stds;
> > +	struct tvp514x_std_info *std_list;
> > +
> > +	struct v4l2_routing route;
> > +};
> > +
> > +/* TVP514x default register values */
> > +static struct tvp514x_reg tvp514x_reg_list[] = {
> > +	{TOK_WRITE, REG_INPUT_SEL, 0x05},	/* Composite selected */
> > +	{TOK_WRITE, REG_AFE_GAIN_CTRL, 0x0F},
> > +	{TOK_WRITE, REG_VIDEO_STD, 0x00},	/* Auto mode */
> > +	{TOK_WRITE, REG_OPERATION_MODE, 0x00},
> > +	{TOK_SKIP, REG_AUTOSWITCH_MASK, 0x3F},
> > +	{TOK_WRITE, REG_COLOR_KILLER, 0x10},
> > +	{TOK_WRITE, REG_LUMA_CONTROL1, 0x00},
> > +	{TOK_WRITE, REG_LUMA_CONTROL2, 0x00},
> > +	{TOK_WRITE, REG_LUMA_CONTROL3, 0x02},
> > +	{TOK_WRITE, REG_BRIGHTNESS, 0x80},
> > +	{TOK_WRITE, REG_CONTRAST, 0x80},
> > +	{TOK_WRITE, REG_SATURATION, 0x80},
> > +	{TOK_WRITE, REG_HUE, 0x00},
> > +	{TOK_WRITE, REG_CHROMA_CONTROL1, 0x00},
> > +	{TOK_WRITE, REG_CHROMA_CONTROL2, 0x0E},
> > +	{TOK_SKIP, 0x0F, 0x00},	/* Reserved */
> > +	{TOK_WRITE, REG_COMP_PR_SATURATION, 0x80},
> > +	{TOK_WRITE, REG_COMP_Y_CONTRAST, 0x80},
> > +	{TOK_WRITE, REG_COMP_PB_SATURATION, 0x80},
> > +	{TOK_SKIP, 0x13, 0x00},	/* Reserved */
> > +	{TOK_WRITE, REG_COMP_Y_BRIGHTNESS, 0x80},
> > +	{TOK_SKIP, 0x15, 0x00},	/* Reserved */
> > +	{TOK_SKIP, REG_AVID_START_PIXEL_LSB, 0x55},	/* NTSC timing */
> > +	{TOK_SKIP, REG_AVID_START_PIXEL_MSB, 0x00},
> > +	{TOK_SKIP, REG_AVID_STOP_PIXEL_LSB, 0x25},
> > +	{TOK_SKIP, REG_AVID_STOP_PIXEL_MSB, 0x03},
> > +	{TOK_SKIP, REG_HSYNC_START_PIXEL_LSB, 0x00},	/* NTSC timing */
> > +	{TOK_SKIP, REG_HSYNC_START_PIXEL_MSB, 0x00},
> > +	{TOK_SKIP, REG_HSYNC_STOP_PIXEL_LSB, 0x40},
> > +	{TOK_SKIP, REG_HSYNC_STOP_PIXEL_MSB, 0x00},
> > +	{TOK_SKIP, REG_VSYNC_START_LINE_LSB, 0x04},	/* NTSC timing */
> > +	{TOK_SKIP, REG_VSYNC_START_LINE_MSB, 0x00},
> > +	{TOK_SKIP, REG_VSYNC_STOP_LINE_LSB, 0x07},
> > +	{TOK_SKIP, REG_VSYNC_STOP_LINE_MSB, 0x00},
> > +	{TOK_SKIP, REG_VBLK_START_LINE_LSB, 0x01},	/* NTSC timing */
> > +	{TOK_SKIP, REG_VBLK_START_LINE_MSB, 0x00},
> > +	{TOK_SKIP, REG_VBLK_STOP_LINE_LSB, 0x15},
> > +	{TOK_SKIP, REG_VBLK_STOP_LINE_MSB, 0x00},
> > +	{TOK_SKIP, 0x26, 0x00},	/* Reserved */
> > +	{TOK_SKIP, 0x27, 0x00},	/* Reserved */
> > +	{TOK_SKIP, REG_FAST_SWTICH_CONTROL, 0xCC},
> > +	{TOK_SKIP, 0x29, 0x00},	/* Reserved */
> > +	{TOK_SKIP, REG_FAST_SWTICH_SCART_DELAY, 0x00},
> > +	{TOK_SKIP, 0x2B, 0x00},	/* Reserved */
> > +	{TOK_SKIP, REG_SCART_DELAY, 0x00},
> > +	{TOK_SKIP, REG_CTI_DELAY, 0x00},
> > +	{TOK_SKIP, REG_CTI_CONTROL, 0x00},
> > +	{TOK_SKIP, 0x2F, 0x00},	/* Reserved */
> > +	{TOK_SKIP, 0x30, 0x00},	/* Reserved */
> > +	{TOK_SKIP, 0x31, 0x00},	/* Reserved */
> > +	{TOK_WRITE, REG_SYNC_CONTROL, 0x00},	/* HS, VS active high */
> > +	{TOK_WRITE, REG_OUTPUT_FORMATTER1, 0x00},	/* 10-bit BT.656 */
> > +	{TOK_WRITE, REG_OUTPUT_FORMATTER2, 0x11},	/* Enable clk & data */
> > +	{TOK_WRITE, REG_OUTPUT_FORMATTER3, 0xEE},	/* Enable AVID & FLD */
> > +	{TOK_WRITE, REG_OUTPUT_FORMATTER4, 0xAF},	/* Enable VS & HS */
> > +	{TOK_WRITE, REG_OUTPUT_FORMATTER5, 0xFF},
> > +	{TOK_WRITE, REG_OUTPUT_FORMATTER6, 0xFF},
> > +	{TOK_WRITE, REG_CLEAR_LOST_LOCK, 0x01},	/* Clear status */
> > +	{TOK_TERM, 0, 0},
> > +};
> > +
> > +/* List of image formats supported by TVP5146/47 decoder
> > + * Currently we are using 8 bit mode only, but can be
> > + * extended to 10/20 bit mode.
> > + */
> > +static const struct v4l2_fmtdesc tvp514x_fmt_list[] = {
> > +	{
> > +	 .index = 0,
> > +	 .type = V4L2_BUF_TYPE_VIDEO_CAPTURE,
> > +	 .flags = 0,
> > +	 .description = "8-bit UYVY 4:2:2 Format",
> > +	 .pixelformat = V4L2_PIX_FMT_UYVY,
> > +	},
> > +};
> > +
> > +/*
> > + * Supported standards -
> > + *
> > + * Currently supports two standards only, need to add support for rest of the
> > + * modes, like SECAM, etc...
> > + */
> > +static struct tvp514x_std_info tvp514x_std_list[] = {
> > +	/* Standard: STD_NTSC_MJ */
> > +	[STD_NTSC_MJ] = {
> > +	 .width = NTSC_NUM_ACTIVE_PIXELS,
> > +	 .height = NTSC_NUM_ACTIVE_LINES,
> > +	 .video_std = VIDEO_STD_NTSC_MJ_BIT,
> > +	 .standard = {
> > +		      .index = 0,
> > +		      .id = V4L2_STD_NTSC,
> > +		      .name = "NTSC",
> > +		      .frameperiod = {1001, 30000},
> > +		      .framelines = 525
> > +		     },
> > +	/* Standard: STD_PAL_BDGHIN */
> > +	},
> > +	[STD_PAL_BDGHIN] = {
> > +	 .width = PAL_NUM_ACTIVE_PIXELS,
> > +	 .height = PAL_NUM_ACTIVE_LINES,
> > +	 .video_std = VIDEO_STD_PAL_BDGHIN_BIT,
> > +	 .standard = {
> > +		      .index = 1,
> > +		      .id = V4L2_STD_PAL,
> > +		      .name = "PAL",
> > +		      .frameperiod = {1, 25},
> > +		      .framelines = 625
> > +		     },
> > +	},
> > +	/* Standard: need to add for additional standard */
> > +};
> > +/*
> > + * Control structure for Auto Gain
> > + *     This is temporary data, will get replaced once
> > + *     v4l2_ctrl_query_fill supports it.
> > + */
> > +static const struct v4l2_queryctrl tvp514x_autogain_ctrl = {
> > +	.id = V4L2_CID_AUTOGAIN,
> > +	.name = "Gain, Automatic",
> > +	.type = V4L2_CTRL_TYPE_BOOLEAN,
> > +	.minimum = 0,
> > +	.maximum = 1,
> > +	.step = 1,
> > +	.default_value = 1,
> > +};
> > +
> > +/*
> > + * Read a value from a register in an TVP5146/47 decoder device.
> > + * Returns value read if successful, or non-zero (-1) otherwise.
> > + */
> > +static int tvp514x_read_reg(struct i2c_client *client, u8 reg)
> > +{
> > +	int err;
> > +	int retry = 0;
> > +read_again:
> > +
> > +	err = i2c_smbus_read_byte_data(client, reg);
> > +	if (err == -1) {
> > +		if (retry <= I2C_RETRY_COUNT) {
> > +			v4l_warn(client, "Read: retry ... %d\n", retry);
> > +			retry++;
> > +			msleep_interruptible(10);
> > +			goto read_again;
> > +		}
> > +	}
> > +
> > +	return err;
> > +}
> > +
> > +/*
> > + * Write a value to a register in an TVP5146/47 decoder device.
> > + * Returns zero if successful, or non-zero otherwise.
> > + */
> > +static int tvp514x_write_reg(struct i2c_client *client, u8 reg, u8 val)
> > +{
> > +	int err;
> > +	int retry = 0;
> > +write_again:
> > +
> > +	err = i2c_smbus_write_byte_data(client, reg, val);
> > +	if (err) {
> > +		if (retry <= I2C_RETRY_COUNT) {
> > +			v4l_warn(client, "Write: retry ... %d\n", retry);
> > +			retry++;
> > +			msleep_interruptible(10);
> > +			goto write_again;
> > +		}
> > +	}
> > +
> > +	return err;
> > +}
> > +
> > +/*
> > + * tvp514x_write_regs : Initializes a list of TVP5146/47 registers
> > + *		if token is TOK_TERM, then entire write operation terminates
> > + *		if token is TOK_DELAY, then a delay of 'val' msec is introduced
> > + *		if token is TOK_SKIP, then the register write is skipped
> > + *		if token is TOK_WRITE, then the register write is performed
> > + *
> > + * reglist - list of registers to be written
> > + * Returns zero if successful, or non-zero otherwise.
> > + */
> > +static int tvp514x_write_regs(struct i2c_client *client,
> > +			      const struct tvp514x_reg reglist[])
> > +{
> > +	int err;
> > +	const struct tvp514x_reg *next = reglist;
> > +
> > +	for (; next->token != TOK_TERM; next++) {
> > +		if (next->token == TOK_DELAY) {
> > +			msleep(next->val);
> > +			continue;
> > +		}
> > +
> > +		if (next->token == TOK_SKIP)
> > +			continue;
> > +
> > +		err = tvp514x_write_reg(client, next->reg, (u8) next->val);
> > +		if (err) {
> > +			v4l_err(client, "Write failed. Err[%d]\n", err);
> > +			return err;
> > +		}
> > +	}
> > +	return 0;
> > +}
> > +
> > +/*
> > + * tvp514x_get_current_std:
> > + * Returns the current standard detected by TVP5146/47
> > + */
> > +static enum tvp514x_std tvp514x_get_current_std(struct tvp514x_decoder
> > +						*decoder)
> > +{
> > +	u8 std, std_status;
> > +
> > +	std = tvp514x_read_reg(decoder->client, REG_VIDEO_STD);
> > +	if ((std & VIDEO_STD_MASK) == VIDEO_STD_AUTO_SWITCH_BIT) {
> > +		/* use the standard status register */
> > +		std_status = tvp514x_read_reg(decoder->client,
> > +				REG_VIDEO_STD_STATUS);
> > +	} else
> > +		std_status = std;	/* use the standard register itself */
> > +
> > +	switch (std_status & VIDEO_STD_MASK) {
> > +	case VIDEO_STD_NTSC_MJ_BIT:
> > +		return STD_NTSC_MJ;
> > +
> > +	case VIDEO_STD_PAL_BDGHIN_BIT:
> > +		return STD_PAL_BDGHIN;
> > +
> > +	default:
> > +		return STD_INVALID;
> > +	}
> > +
> > +	return STD_INVALID;
> > +}
> > +
> > +/*
> > + * TVP5146/47 register dump function
> > + */
> > +static void tvp514x_reg_dump(struct tvp514x_decoder *decoder)
> > +{
> > +	u8 value;
> > +
> > +	dump_reg(decoder->client, REG_INPUT_SEL, value);
> > +	dump_reg(decoder->client, REG_AFE_GAIN_CTRL, value);
> > +	dump_reg(decoder->client, REG_VIDEO_STD, value);
> > +	dump_reg(decoder->client, REG_OPERATION_MODE, value);
> > +	dump_reg(decoder->client, REG_COLOR_KILLER, value);
> > +	dump_reg(decoder->client, REG_LUMA_CONTROL1, value);
> > +	dump_reg(decoder->client, REG_LUMA_CONTROL2, value);
> > +	dump_reg(decoder->client, REG_LUMA_CONTROL3, value);
> > +	dump_reg(decoder->client, REG_BRIGHTNESS, value);
> > +	dump_reg(decoder->client, REG_CONTRAST, value);
> > +	dump_reg(decoder->client, REG_SATURATION, value);
> > +	dump_reg(decoder->client, REG_HUE, value);
> > +	dump_reg(decoder->client, REG_CHROMA_CONTROL1, value);
> > +	dump_reg(decoder->client, REG_CHROMA_CONTROL2, value);
> > +	dump_reg(decoder->client, REG_COMP_PR_SATURATION, value);
> > +	dump_reg(decoder->client, REG_COMP_Y_CONTRAST, value);
> > +	dump_reg(decoder->client, REG_COMP_PB_SATURATION, value);
> > +	dump_reg(decoder->client, REG_COMP_Y_BRIGHTNESS, value);
> > +	dump_reg(decoder->client, REG_AVID_START_PIXEL_LSB, value);
> > +	dump_reg(decoder->client, REG_AVID_START_PIXEL_MSB, value);
> > +	dump_reg(decoder->client, REG_AVID_STOP_PIXEL_LSB, value);
> > +	dump_reg(decoder->client, REG_AVID_STOP_PIXEL_MSB, value);
> > +	dump_reg(decoder->client, REG_HSYNC_START_PIXEL_LSB, value);
> > +	dump_reg(decoder->client, REG_HSYNC_START_PIXEL_MSB, value);
> > +	dump_reg(decoder->client, REG_HSYNC_STOP_PIXEL_LSB, value);
> > +	dump_reg(decoder->client, REG_HSYNC_STOP_PIXEL_MSB, value);
> > +	dump_reg(decoder->client, REG_VSYNC_START_LINE_LSB, value);
> > +	dump_reg(decoder->client, REG_VSYNC_START_LINE_MSB, value);
> > +	dump_reg(decoder->client, REG_VSYNC_STOP_LINE_LSB, value);
> > +	dump_reg(decoder->client, REG_VSYNC_STOP_LINE_MSB, value);
> > +	dump_reg(decoder->client, REG_VBLK_START_LINE_LSB, value);
> > +	dump_reg(decoder->client, REG_VBLK_START_LINE_MSB, value);
> > +	dump_reg(decoder->client, REG_VBLK_STOP_LINE_LSB, value);
> > +	dump_reg(decoder->client, REG_VBLK_STOP_LINE_MSB, value);
> > +	dump_reg(decoder->client, REG_SYNC_CONTROL, value);
> > +	dump_reg(decoder->client, REG_OUTPUT_FORMATTER1, value);
> > +	dump_reg(decoder->client, REG_OUTPUT_FORMATTER2, value);
> > +	dump_reg(decoder->client, REG_OUTPUT_FORMATTER3, value);
> > +	dump_reg(decoder->client, REG_OUTPUT_FORMATTER4, value);
> > +	dump_reg(decoder->client, REG_OUTPUT_FORMATTER5, value);
> > +	dump_reg(decoder->client, REG_OUTPUT_FORMATTER6, value);
> > +	dump_reg(decoder->client, REG_CLEAR_LOST_LOCK, value);
> > +}
> > +
> > +/*
> > + * Configure the TVP5146/47 with the current register settings
> > + * Returns zero if successful, or non-zero otherwise.
> > + */
> > +static int tvp514x_configure(struct tvp514x_decoder *decoder)
> > +{
> > +	int err;
> > +
> > +	/* common register initialization */
> > +	err =
> > +	    tvp514x_write_regs(decoder->client, tvp514x_reg_list);
> > +	if (err)
> > +		return err;
> > +
> > +	if (debug)
> > +		tvp514x_reg_dump(decoder);
> > +
> > +	return 0;
> > +}
> > +
> > +/*
> > + * Detect if an tvp514x is present, and if so which revision.
> > + * A device is considered to be detected if the chip ID (LSB and MSB)
> > + * registers match the expected values.
> > + * Any value of the rom version register is accepted.
> > + * Returns ENODEV error number if no device is detected, or zero
> > + * if a device is detected.
> > + */
> > +static int tvp514x_detect(struct tvp514x_decoder *decoder)
> > +{
> > +	u8 chip_id_msb, chip_id_lsb, rom_ver;
> > +
> > +	chip_id_msb = tvp514x_read_reg(decoder->client, REG_CHIP_ID_MSB);
> > +	chip_id_lsb = tvp514x_read_reg(decoder->client, REG_CHIP_ID_LSB);
> > +	rom_ver = tvp514x_read_reg(decoder->client, REG_ROM_VERSION);
> > +
> > +	v4l_dbg(1, debug, decoder->client,
> > +		 "chip id detected msb:0x%x lsb:0x%x rom version:0x%x\n",
> > +		 chip_id_msb, chip_id_lsb, rom_ver);
> > +	if ((chip_id_msb != TVP514X_CHIP_ID_MSB)
> > +		|| ((chip_id_lsb != TVP5146_CHIP_ID_LSB)
> > +		&& (chip_id_lsb != TVP5147_CHIP_ID_LSB))) {
> > +		/* We didn't read the values we expected, so this must not be
> > +		 * an TVP5146/47.
> > +		 */
> > +		v4l_err(decoder->client,
> > +			"chip id mismatch msb:0x%x lsb:0x%x\n",
> > +			chip_id_msb, chip_id_lsb);
> > +		return -ENODEV;
> > +	}
> > +
> > +	decoder->ver = rom_ver;
> > +	decoder->state = STATE_DETECTED;
> > +
> > +	v4l_info(decoder->client,
> > +			"\n%s found at 0x%x (%s)\n", decoder->client->name,
> > +			decoder->client->addr << 1,
> > +			decoder->client->adapter->name);
> > +	return 0;
> > +}
> > +
> > +/*
> > + * Following are decoder interface functions implemented by
> > + * TVP5146/47 decoder driver.
> > + */
> > +
> > +/**
> > + * ioctl_querystd - V4L2 decoder interface handler for VIDIOC_QUERYSTD ioctl
> > + * @s: pointer to standard V4L2 device structure
> > + * @std_id: standard V4L2 std_id ioctl enum
> > + *
> > + * Returns the current standard detected by TVP5146/47. If no active input is
> > + * detected, returns -EINVAL
> > + */
> > +static int ioctl_querystd(struct v4l2_int_device *s, v4l2_std_id *std_id)
> > +{
> > +	struct tvp514x_decoder *decoder = s->priv;
> > +	enum tvp514x_std current_std;
> > +	enum tvp514x_input input_sel;
> > +	u8 sync_lock_status, lock_mask;
> > +
> > +	if (std_id == NULL)
> > +		return -EINVAL;
> > +
> > +	/* get the current standard */
> > +	current_std = tvp514x_get_current_std(decoder);
> > +	if (current_std == STD_INVALID)
> > +		return -EINVAL;
> > +
> > +	input_sel = decoder->route.input;
> > +
> > +	switch (input_sel) {
> > +	case INPUT_CVBS_VI1A:
> > +	case INPUT_CVBS_VI1B:
> > +	case INPUT_CVBS_VI1C:
> > +	case INPUT_CVBS_VI2A:
> > +	case INPUT_CVBS_VI2B:
> > +	case INPUT_CVBS_VI2C:
> > +	case INPUT_CVBS_VI3A:
> > +	case INPUT_CVBS_VI3B:
> > +	case INPUT_CVBS_VI3C:
> > +	case INPUT_CVBS_VI4A:
> > +		lock_mask = STATUS_CLR_SUBCAR_LOCK_BIT |
> > +			STATUS_HORZ_SYNC_LOCK_BIT |
> > +			STATUS_VIRT_SYNC_LOCK_BIT;
> > +		break;
> > +
> > +	case INPUT_SVIDEO_VI2A_VI1A:
> > +	case INPUT_SVIDEO_VI2B_VI1B:
> > +	case INPUT_SVIDEO_VI2C_VI1C:
> > +	case INPUT_SVIDEO_VI2A_VI3A:
> > +	case INPUT_SVIDEO_VI2B_VI3B:
> > +	case INPUT_SVIDEO_VI2C_VI3C:
> > +	case INPUT_SVIDEO_VI4A_VI1A:
> > +	case INPUT_SVIDEO_VI4A_VI1B:
> > +	case INPUT_SVIDEO_VI4A_VI1C:
> > +	case INPUT_SVIDEO_VI4A_VI3A:
> > +	case INPUT_SVIDEO_VI4A_VI3B:
> > +	case INPUT_SVIDEO_VI4A_VI3C:
> > +		lock_mask = STATUS_HORZ_SYNC_LOCK_BIT |
> > +			STATUS_VIRT_SYNC_LOCK_BIT;
> > +		break;
> > +		/*Need to add other interfaces*/
> > +	default:
> > +		return -EINVAL;
> > +	}
> > +	/* check whether signal is locked */
> > +	sync_lock_status = tvp514x_read_reg(decoder->client, REG_STATUS1);
> > +	if (lock_mask != (sync_lock_status & lock_mask))
> > +		return -EINVAL;	/* No input detected */
> > +
> > +	decoder->current_std = current_std;
> > +	*std_id = decoder->std_list[current_std].standard.id;
> > +
> > +	v4l_dbg(1, debug, decoder->client, "Current STD: %s",
> > +			decoder->std_list[current_std].standard.name);
> > +	return 0;
> > +}
> > +
> > +/**
> > + * ioctl_s_std - V4L2 decoder interface handler for VIDIOC_S_STD ioctl
> > + * @s: pointer to standard V4L2 device structure
> > + * @std_id: standard V4L2 v4l2_std_id ioctl enum
> > + *
> > + * If std_id is supported, sets the requested standard. Otherwise, returns
> > + * -EINVAL
> > + */
> > +static int ioctl_s_std(struct v4l2_int_device *s, v4l2_std_id *std_id)
> > +{
> > +	struct tvp514x_decoder *decoder = s->priv;
> > +	int err, i;
> > +
> > +	if (std_id == NULL)
> > +		return -EINVAL;
> > +
> > +	for (i = 0; i < decoder->num_stds; i++)
> > +		if (*std_id & decoder->std_list[i].standard.id)
> > +			break;
> > +
> > +	if ((i == decoder->num_stds) || (i == STD_INVALID))
> > +		return -EINVAL;
> > +
> > +	err = tvp514x_write_reg(decoder->client, REG_VIDEO_STD,
> > +				decoder->std_list[i].video_std);
> > +	if (err)
> > +		return err;
> > +
> > +	decoder->current_std = i;
> > +	tvp514x_reg_list[REG_VIDEO_STD].val = decoder->std_list[i].video_std;
> > +
> > +	v4l_dbg(1, debug, decoder->client, "Standard set to: %s",
> > +			decoder->std_list[i].standard.name);
> > +	return 0;
> > +}
> > +
> > +/**
> > + * ioctl_s_routing - V4L2 decoder interface handler for VIDIOC_S_INPUT ioctl
> > + * @s: pointer to standard V4L2 device structure
> > + * @index: number of the input
> > + *
> > + * If index is valid, selects the requested input. Otherwise, returns -EINVAL if
> > + * the input is not supported or there is no active signal present in the
> > + * selected input.
> > + */
> > +static int ioctl_s_routing(struct v4l2_int_device *s,
> > +				struct v4l2_routing *route)
> > +{
> > +	struct tvp514x_decoder *decoder = s->priv;
> > +	int err;
> > +	enum tvp514x_input input_sel;
> > +	enum tvp514x_output output_sel;
> > +	enum tvp514x_std current_std = STD_INVALID;
> > +	u8 sync_lock_status, lock_mask;
> > +	int try_count = LOCK_RETRY_COUNT;
> > +
> > +	if ((!route) || (route->input >= INPUT_INVALID) ||
> > +			(route->output >= OUTPUT_INVALID))
> > +		return -EINVAL;	/* Index out of bound */
> > +
> > +	input_sel = route->input;
> > +	output_sel = route->output;
> > +
> > +	err = tvp514x_write_reg(decoder->client, REG_INPUT_SEL, input_sel);
> > +	if (err)
> > +		return err;
> > +
> > +	output_sel |= tvp514x_read_reg(decoder->client,
> > +			REG_OUTPUT_FORMATTER1) & 0x7;
> > +	err = tvp514x_write_reg(decoder->client, REG_OUTPUT_FORMATTER1,
> > +			output_sel);
> > +	if (err)
> > +		return err;
> > +
> > +	tvp514x_reg_list[REG_INPUT_SEL].val = input_sel;
> > +	tvp514x_reg_list[REG_OUTPUT_FORMATTER1].val = output_sel;
> > +
> > +	/* Clear status */
> > +	msleep(LOCK_RETRY_DELAY);
> > +	err =
> > +	    tvp514x_write_reg(decoder->client, REG_CLEAR_LOST_LOCK, 0x01);
> > +	if (err)
> > +		return err;
> > +
> > +	switch (input_sel) {
> > +	case INPUT_CVBS_VI1A:
> > +	case INPUT_CVBS_VI1B:
> > +	case INPUT_CVBS_VI1C:
> > +	case INPUT_CVBS_VI2A:
> > +	case INPUT_CVBS_VI2B:
> > +	case INPUT_CVBS_VI2C:
> > +	case INPUT_CVBS_VI3A:
> > +	case INPUT_CVBS_VI3B:
> > +	case INPUT_CVBS_VI3C:
> > +	case INPUT_CVBS_VI4A:
> > +		lock_mask = STATUS_CLR_SUBCAR_LOCK_BIT |
> > +			STATUS_HORZ_SYNC_LOCK_BIT |
> > +			STATUS_VIRT_SYNC_LOCK_BIT;
> > +		break;
> > +
> > +	case INPUT_SVIDEO_VI2A_VI1A:
> > +	case INPUT_SVIDEO_VI2B_VI1B:
> > +	case INPUT_SVIDEO_VI2C_VI1C:
> > +	case INPUT_SVIDEO_VI2A_VI3A:
> > +	case INPUT_SVIDEO_VI2B_VI3B:
> > +	case INPUT_SVIDEO_VI2C_VI3C:
> > +	case INPUT_SVIDEO_VI4A_VI1A:
> > +	case INPUT_SVIDEO_VI4A_VI1B:
> > +	case INPUT_SVIDEO_VI4A_VI1C:
> > +	case INPUT_SVIDEO_VI4A_VI3A:
> > +	case INPUT_SVIDEO_VI4A_VI3B:
> > +	case INPUT_SVIDEO_VI4A_VI3C:
> > +		lock_mask = STATUS_HORZ_SYNC_LOCK_BIT |
> > +			STATUS_VIRT_SYNC_LOCK_BIT;
> > +		break;
> > +	/*Need to add other interfaces*/
> > +	default:
> > +		return -EINVAL;
> > +	}
> > +
> > +	while (try_count-- > 0) {
> > +		/* Allow decoder to sync up with new input */
> > +		msleep(LOCK_RETRY_DELAY);
> > +
> > +		/* get the current standard for future reference */
> > +		current_std = tvp514x_get_current_std(decoder);
> > +		if (current_std == STD_INVALID)
> > +			continue;
> > +
> > +		sync_lock_status = tvp514x_read_reg(decoder->client,
> > +				REG_STATUS1);
> > +		if (lock_mask == (sync_lock_status & lock_mask))
> > +			break;	/* Input detected */
> > +	}
> > +
> > +	if ((current_std == STD_INVALID) || (try_count < 0))
> > +		return -EINVAL;
> > +
> > +	decoder->current_std = current_std;
> > +	decoder->route.input = route->input;
> > +	decoder->route.output = route->output;
> > +
> > +	v4l_dbg(1, debug, decoder->client,
> > +			"Input set to: %d, std : %d",
> > +			input_sel, current_std);
> > +
> > +	return 0;
> > +}
> > +
> > +/**
> > + * ioctl_queryctrl - V4L2 decoder interface handler for VIDIOC_QUERYCTRL ioctl
> > + * @s: pointer to standard V4L2 device structure
> > + * @qctrl: standard V4L2 v4l2_queryctrl structure
> > + *
> > + * If the requested control is supported, returns the control information.
> > + * Otherwise, returns -EINVAL if the control is not supported.
> > + */
> > +static int
> > +ioctl_queryctrl(struct v4l2_int_device *s, struct v4l2_queryctrl *qctrl)
> > +{
> > +	struct tvp514x_decoder *decoder = s->priv;
> > +	int err = -EINVAL;
> > +
> > +	if (qctrl == NULL)
> > +		return err;
> > +
> > +	switch (qctrl->id) {
> > +	case V4L2_CID_BRIGHTNESS:
> > +		/* Brightness supported is same as standard one (0-255),
> > +		 * so make use of standard API provided.
> > +		 */
> > +		err = v4l2_ctrl_query_fill_std(qctrl);
> > +		break;
> > +	case V4L2_CID_CONTRAST:
> > +	case V4L2_CID_SATURATION:
> > +		/* Saturation and Contrast supported is -
> > +		 *	Contrast: 0 - 255 (Default - 128)
> > +		 *	Saturation: 0 - 255 (Default - 128)
> > +		 */
> > +		err = v4l2_ctrl_query_fill(qctrl, 0, 255, 1, 128);
> > +		break;
> > +	case V4L2_CID_HUE:
> > +		/* Hue Supported is -
> > +		 *	Hue - -180 - +180 (Default - 0, Step - +180)
> > +		 */
> > +		err = v4l2_ctrl_query_fill(qctrl, -180, 180, 180, 0);
> > +		break;
> > +	case V4L2_CID_AUTOGAIN:
> > +		/* Autogain is either 0 or 1*/
> > +		memcpy(qctrl, &tvp514x_autogain_ctrl,
> > +				sizeof(struct v4l2_queryctrl));
> > +		err = 0;
> > +		break;
> > +	default:
> > +		v4l_err(decoder->client,
> > +			"invalid control id %d\n", qctrl->id);
> > +		return err;
> > +	}
> > +
> > +	v4l_dbg(1, debug, decoder->client,
> > +			"Query Control: %s : Min - %d, Max - %d, Def - %d",
> > +			qctrl->name,
> > +			qctrl->minimum,
> > +			qctrl->maximum,
> > +			qctrl->default_value);
> > +
> > +	return err;
> > +}
> > +
> > +/**
> > + * ioctl_g_ctrl - V4L2 decoder interface handler for VIDIOC_G_CTRL ioctl
> > + * @s: pointer to standard V4L2 device structure
> > + * @ctrl: pointer to v4l2_control structure
> > + *
> > + * If the requested control is supported, returns the control's current
> > + * value from the decoder. Otherwise, returns -EINVAL if the control is not
> > + * supported.
> > + */
> > +static int
> > +ioctl_g_ctrl(struct v4l2_int_device *s, struct v4l2_control *ctrl)
> > +{
> > +	struct tvp514x_decoder *decoder = s->priv;
> > +
> > +	if (ctrl == NULL)
> > +		return -EINVAL;
> > +
> > +	switch (ctrl->id) {
> > +	case V4L2_CID_BRIGHTNESS:
> > +		ctrl->value = tvp514x_reg_list[REG_BRIGHTNESS].val;
> > +		break;
> > +	case V4L2_CID_CONTRAST:
> > +		ctrl->value = tvp514x_reg_list[REG_CONTRAST].val;
> > +		break;
> > +	case V4L2_CID_SATURATION:
> > +		ctrl->value = tvp514x_reg_list[REG_SATURATION].val;
> > +		break;
> > +	case V4L2_CID_HUE:
> > +		ctrl->value = tvp514x_reg_list[REG_HUE].val;
> > +		if (ctrl->value == 0x7F)
> > +			ctrl->value = 180;
> > +		else if (ctrl->value == 0x80)
> > +			ctrl->value = -180;
> > +		else
> > +			ctrl->value = 0;
> > +
> > +		break;
> > +	case V4L2_CID_AUTOGAIN:
> > +		ctrl->value = tvp514x_reg_list[REG_AFE_GAIN_CTRL].val;
> > +		if ((ctrl->value & 0x3) == 3)
> > +			ctrl->value = 1;
> > +		else
> > +			ctrl->value = 0;
> > +
> > +		break;
> > +	default:
> > +		v4l_err(decoder->client,
> > +			"invalid control id %d\n", ctrl->id);
> > +		return -EINVAL;
> > +	}
> > +
> > +	v4l_dbg(1, debug, decoder->client,
> > +			"Get Cotrol: ID - %d - %d",
> > +			ctrl->id, ctrl->value);
> > +	return 0;
> > +}
> > +
> > +/**
> > + * ioctl_s_ctrl - V4L2 decoder interface handler for VIDIOC_S_CTRL ioctl
> > + * @s: pointer to standard V4L2 device structure
> > + * @ctrl: pointer to v4l2_control structure
> > + *
> > + * If the requested control is supported, sets the control's current
> > + * value in HW. Otherwise, returns -EINVAL if the control is not supported.
> > + */
> > +static int
> > +ioctl_s_ctrl(struct v4l2_int_device *s, struct v4l2_control *ctrl)
> > +{
> > +	struct tvp514x_decoder *decoder = s->priv;
> > +	int err = -EINVAL, value;
> > +
> > +	if (ctrl == NULL)
> > +		return err;
> > +
> > +	value = (__s32) ctrl->value;
> > +
> > +	switch (ctrl->id) {
> > +	case V4L2_CID_BRIGHTNESS:
> > +		if (ctrl->value < 0 || ctrl->value > 255) {
> > +			v4l_err(decoder->client,
> > +					"invalid brightness setting %d\n",
> > +					ctrl->value);
> > +			return -ERANGE;
> > +		}
> > +		err = tvp514x_write_reg(decoder->client, REG_BRIGHTNESS,
> > +				value);
> > +		if (err)
> > +			return err;
> > +		tvp514x_reg_list[REG_BRIGHTNESS].val = value;
> > +		break;
> > +	case V4L2_CID_CONTRAST:
> > +		if (ctrl->value < 0 || ctrl->value > 255) {
> > +			v4l_err(decoder->client,
> > +					"invalid contrast setting %d\n",
> > +					ctrl->value);
> > +			return -ERANGE;
> > +		}
> > +		err = tvp514x_write_reg(decoder->client, REG_CONTRAST,
> > +				value);
> > +		if (err)
> > +			return err;
> > +		tvp514x_reg_list[REG_CONTRAST].val = value;
> > +		break;
> > +	case V4L2_CID_SATURATION:
> > +		if (ctrl->value < 0 || ctrl->value > 255) {
> > +			v4l_err(decoder->client,
> > +					"invalid saturation setting %d\n",
> > +					ctrl->value);
> > +			return -ERANGE;
> > +		}
> > +		err = tvp514x_write_reg(decoder->client, REG_SATURATION,
> > +				value);
> > +		if (err)
> > +			return err;
> > +		tvp514x_reg_list[REG_SATURATION].val = value;
> > +		break;
> > +	case V4L2_CID_HUE:
> > +		if (value == 180)
> > +			value = 0x7F;
> > +		else if (value == -180)
> > +			value = 0x80;
> > +		else if (value == 0)
> > +			value = 0;
> > +		else {
> > +			v4l_err(decoder->client,
> > +					"invalid hue setting %d\n",
> > +					ctrl->value);
> > +			return -ERANGE;
> > +		}
> > +		err = tvp514x_write_reg(decoder->client, REG_HUE,
> > +				value);
> > +		if (err)
> > +			return err;
> > +		tvp514x_reg_list[REG_HUE].val = value;
> > +		break;
> > +	case V4L2_CID_AUTOGAIN:
> > +		if (value == 1)
> > +			value = 0x0F;
> > +		else if (value == 0)
> > +			value = 0x0C;
> > +		else {
> > +			v4l_err(decoder->client,
> > +					"invalid auto gain setting %d\n",
> > +					ctrl->value);
> > +			return -ERANGE;
> > +		}
> > +		err = tvp514x_write_reg(decoder->client, REG_AFE_GAIN_CTRL,
> > +				value);
> > +		if (err)
> > +			return err;
> > +		tvp514x_reg_list[REG_AFE_GAIN_CTRL].val = value;
> > +		break;
> > +	default:
> > +		v4l_err(decoder->client,
> > +			"invalid control id %d\n", ctrl->id);
> > +		return err;
> > +	}
> > +
> > +	v4l_dbg(1, debug, decoder->client,
> > +			"Set Cotrol: ID - %d - %d",
> > +			ctrl->id, ctrl->value);
> > +
> > +	return err;
> > +}
> > +
> > +/**
> > + * ioctl_enum_fmt_cap - Implement the CAPTURE buffer VIDIOC_ENUM_FMT ioctl
> > + * @s: pointer to standard V4L2 device structure
> > + * @fmt: standard V4L2 VIDIOC_ENUM_FMT ioctl structure
> > + *
> > + * Implement the VIDIOC_ENUM_FMT ioctl to enumerate supported formats
> > + */
> > +static int
> > +ioctl_enum_fmt_cap(struct v4l2_int_device *s, struct v4l2_fmtdesc *fmt)
> > +{
> > +	struct tvp514x_decoder *decoder = s->priv;
> > +	int index;
> > +
> > +	if (fmt == NULL)
> > +		return -EINVAL;
> > +
> > +	index = fmt->index;
> > +	if ((index >= decoder->num_fmts) || (index < 0))
> > +		return -EINVAL;	/* Index out of bound */
> > +
> > +	if (fmt->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
> > +		return -EINVAL;	/* only capture is supported */
> > +
> > +	memcpy(fmt, &decoder->fmt_list[index],
> > +		sizeof(struct v4l2_fmtdesc));
> > +
> > +	v4l_dbg(1, debug, decoder->client,
> > +			"Current FMT: index - %d (%s)",
> > +			decoder->fmt_list[index].index,
> > +			decoder->fmt_list[index].description);
> > +	return 0;
> > +}
> > +
> > +/**
> > + * ioctl_try_fmt_cap - Implement the CAPTURE buffer VIDIOC_TRY_FMT ioctl
> > + * @s: pointer to standard V4L2 device structure
> > + * @f: pointer to standard V4L2 VIDIOC_TRY_FMT ioctl structure
> > + *
> > + * Implement the VIDIOC_TRY_FMT ioctl for the CAPTURE buffer type. This
> > + * ioctl is used to negotiate the image capture size and pixel format
> > + * without actually making it take effect.
> > + */
> > +static int
> > +ioctl_try_fmt_cap(struct v4l2_int_device *s, struct v4l2_format *f)
> > +{
> > +	struct tvp514x_decoder *decoder = s->priv;
> > +	int ifmt;
> > +	struct v4l2_pix_format *pix;
> > +	enum tvp514x_std current_std;
> > +
> > +	if (f == NULL)
> > +		return -EINVAL;
> > +
> > +	if (f->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
> > +		f->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
> > +
> > +	pix = &f->fmt.pix;
> > +
> > +	/* Calculate height and width based on current standard */
> > +	current_std = tvp514x_get_current_std(decoder);
> > +	if (current_std == STD_INVALID)
> > +		return -EINVAL;
> > +
> > +	decoder->current_std = current_std;
> > +	pix->width = decoder->std_list[current_std].width;
> > +	pix->height = decoder->std_list[current_std].height;
> > +
> > +	for (ifmt = 0; ifmt < decoder->num_fmts; ifmt++) {
> > +		if (pix->pixelformat ==
> > +			decoder->fmt_list[ifmt].pixelformat)
> > +			break;
> > +	}
> > +	if (ifmt == decoder->num_fmts)
> > +		ifmt = 0;	/* None of the format matched, select default */
> > +	pix->pixelformat = decoder->fmt_list[ifmt].pixelformat;
> > +
> > +	pix->field = V4L2_FIELD_INTERLACED;
> > +	pix->bytesperline = pix->width * 2;
> > +	pix->sizeimage = pix->bytesperline * pix->height;
> > +	pix->colorspace = V4L2_COLORSPACE_SMPTE170M;
> > +	pix->priv = 0;
> > +
> > +	v4l_dbg(1, debug, decoder->client,
> > +			"Try FMT: pixelformat - %s, bytesperline - %d"
> > +			"Width - %d, Height - %d",
> > +			decoder->fmt_list[ifmt].description, pix->bytesperline,
> > +			pix->width, pix->height);
> > +	return 0;
> > +}
> > +
> > +/**
> > + * ioctl_s_fmt_cap - V4L2 decoder interface handler for VIDIOC_S_FMT ioctl
> > + * @s: pointer to standard V4L2 device structure
> > + * @f: pointer to standard V4L2 VIDIOC_S_FMT ioctl structure
> > + *
> > + * If the requested format is supported, configures the HW to use that
> > + * format, returns error code if format not supported or HW can't be
> > + * correctly configured.
> > + */
> > +static int
> > +ioctl_s_fmt_cap(struct v4l2_int_device *s, struct v4l2_format *f)
> > +{
> > +	struct tvp514x_decoder *decoder = s->priv;
> > +	struct v4l2_pix_format *pix;
> > +	int rval;
> > +
> > +	if (f == NULL)
> > +		return -EINVAL;
> > +
> > +	if (f->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
> > +		return -EINVAL;	/* only capture is supported */
> > +
> > +	pix = &f->fmt.pix;
> > +	rval = ioctl_try_fmt_cap(s, f);
> > +	if (rval)
> > +		return rval;
> > +
> > +		decoder->pix = *pix;
> > +
> > +	return rval;
> > +}
> > +
> > +/**
> > + * ioctl_g_fmt_cap - V4L2 decoder interface handler for ioctl_g_fmt_cap
> > + * @s: pointer to standard V4L2 device structure
> > + * @f: pointer to standard V4L2 v4l2_format structure
> > + *
> > + * Returns the decoder's current pixel format in the v4l2_format
> > + * parameter.
> > + */
> > +static int
> > +ioctl_g_fmt_cap(struct v4l2_int_device *s, struct v4l2_format *f)
> > +{
> > +	struct tvp514x_decoder *decoder = s->priv;
> > +
> > +	if (f == NULL)
> > +		return -EINVAL;
> > +
> > +	if (f->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
> > +		return -EINVAL;	/* only capture is supported */
> > +
> > +	f->fmt.pix = decoder->pix;
> > +
> > +	v4l_dbg(1, debug, decoder->client,
> > +			"Current FMT: bytesperline - %d"
> > +			"Width - %d, Height - %d",
> > +			decoder->pix.bytesperline,
> > +			decoder->pix.width, decoder->pix.height);
> > +	return 0;
> > +}
> > +
> > +/**
> > + * ioctl_g_parm - V4L2 decoder interface handler for VIDIOC_G_PARM ioctl
> > + * @s: pointer to standard V4L2 device structure
> > + * @a: pointer to standard V4L2 VIDIOC_G_PARM ioctl structure
> > + *
> > + * Returns the decoder's video CAPTURE parameters.
> > + */
> > +static int
> > +ioctl_g_parm(struct v4l2_int_device *s, struct v4l2_streamparm *a)
> > +{
> > +	struct tvp514x_decoder *decoder = s->priv;
> > +	struct v4l2_captureparm *cparm;
> > +	enum tvp514x_std current_std;
> > +
> > +	if (a == NULL)
> > +		return -EINVAL;
> > +
> > +	if (a->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
> > +		return -EINVAL;	/* only capture is supported */
> > +
> > +	memset(a, 0, sizeof(*a));
> > +	a->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
> > +
> > +	/* get the current standard */
> > +	current_std = tvp514x_get_current_std(decoder);
> > +	if (current_std == STD_INVALID)
> > +		return -EINVAL;
> > +
> > +	decoder->current_std = current_std;
> > +
> > +	cparm = &a->parm.capture;
> > +	cparm->capability = V4L2_CAP_TIMEPERFRAME;
> > +	cparm->timeperframe =
> > +		decoder->std_list[current_std].standard.frameperiod;
> > +
> > +	return 0;
> > +}
> > +
> > +/**
> > + * ioctl_s_parm - V4L2 decoder interface handler for VIDIOC_S_PARM ioctl
> > + * @s: pointer to standard V4L2 device structure
> > + * @a: pointer to standard V4L2 VIDIOC_S_PARM ioctl structure
> > + *
> > + * Configures the decoder to use the input parameters, if possible. If
> > + * not possible, returns the appropriate error code.
> > + */
> > +static int
> > +ioctl_s_parm(struct v4l2_int_device *s, struct v4l2_streamparm *a)
> > +{
> > +	struct tvp514x_decoder *decoder = s->priv;
> > +	struct v4l2_fract *timeperframe;
> > +	enum tvp514x_std current_std;
> > +
> > +	if (a == NULL)
> > +		return -EINVAL;
> > +
> > +	if (a->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
> > +		return -EINVAL;	/* only capture is supported */
> > +
> > +	timeperframe = &a->parm.capture.timeperframe;
> > +
> > +	/* get the current standard */
> > +	current_std = tvp514x_get_current_std(decoder);
> > +	if (current_std == STD_INVALID)
> > +		return -EINVAL;
> > +
> > +	decoder->current_std = current_std;
> > +
> > +	*timeperframe =
> > +	    decoder->std_list[current_std].standard.frameperiod;
> > +
> > +	return 0;
> > +}
> > +
> > +/**
> > + * ioctl_g_ifparm - V4L2 decoder interface handler for vidioc_int_g_ifparm_num
> > + * @s: pointer to standard V4L2 device structure
> > + * @p: pointer to standard V4L2 vidioc_int_g_ifparm_num ioctl structure
> > + *
> > + * Gets slave interface parameters.
> > + * Calculates the required xclk value to support the requested
> > + * clock parameters in p. This value is returned in the p
> > + * parameter.
> > + */
> > +static int ioctl_g_ifparm(struct v4l2_int_device *s, struct v4l2_ifparm *p)
> > +{
> > +	struct tvp514x_decoder *decoder = s->priv;
> > +	int rval;
> > +
> > +	if (p == NULL)
> > +		return -EINVAL;
> > +
> > +	if (NULL == decoder->pdata->ifparm)
> > +		return -EINVAL;
> > +
> > +	rval = decoder->pdata->ifparm(p);
> > +	if (rval) {
> > +		v4l_err(decoder->client, "g_ifparm.Err[%d]\n", rval);
> > +		return rval;
> > +	}
> > +
> > +	p->u.bt656.clock_curr = TVP514X_XCLK_BT656;
> > +
> > +	return 0;
> > +}
> > +
> > +/**
> > + * ioctl_g_priv - V4L2 decoder interface handler for vidioc_int_g_priv_num
> > + * @s: pointer to standard V4L2 device structure
> > + * @p: void pointer to hold decoder's private data address
> > + *
> > + * Returns device's (decoder's) private data area address in p parameter
> > + */
> > +static int ioctl_g_priv(struct v4l2_int_device *s, void *p)
> > +{
> > +	struct tvp514x_decoder *decoder = s->priv;
> > +
> > +	if (NULL == decoder->pdata->priv_data_set)
> > +		return -EINVAL;
> > +
> > +	return decoder->pdata->priv_data_set(p);
> > +}
> > +
> > +/**
> > + * ioctl_s_power - V4L2 decoder interface handler for vidioc_int_s_power_num
> > + * @s: pointer to standard V4L2 device structure
> > + * @on: power state to which device is to be set
> > + *
> > + * Sets devices power state to requrested state, if possible.
> > + */
> > +static int ioctl_s_power(struct v4l2_int_device *s, enum v4l2_power on)
> > +{
> > +	struct tvp514x_decoder *decoder = s->priv;
> > +	int err = 0;
> > +
> > +	switch (on) {
> > +	case V4L2_POWER_OFF:
> > +		/* Power Down Sequence */
> > +		err =
> > +		    tvp514x_write_reg(decoder->client, REG_OPERATION_MODE,
> > +					0x01);
> > +		/* Disable mux for TVP5146/47 decoder data path */
> > +		if (decoder->pdata->power_set)
> > +			err |= decoder->pdata->power_set(on);
> > +		decoder->state = STATE_NOT_DETECTED;
> > +		break;
> > +
> > +	case V4L2_POWER_STANDBY:
> > +		if (decoder->pdata->power_set)
> > +			err = decoder->pdata->power_set(on);
> > +		break;
> > +
> > +	case V4L2_POWER_ON:
> > +		/* Enable mux for TVP5146/47 decoder data path */
> > +		if ((decoder->pdata->power_set) &&
> > +				(decoder->state == STATE_NOT_DETECTED)) {
> > +			int i;
> > +			struct tvp514x_init_seq *int_seq =
> > +				(struct tvp514x_init_seq *)
> > +				decoder->id->driver_data;
> > +
> > +			err = decoder->pdata->power_set(on);
> > +
> > +			/* Power Up Sequence */
> > +			for (i = 0; i < int_seq->no_regs; i++) {
> > +				err |= tvp514x_write_reg(decoder->client,
> > +						int_seq->init_reg_seq[i].reg,
> > +						int_seq->init_reg_seq[i].val);
> > +			}
> > +			/* Detect the sensor is not already detected */
> > +			err |= tvp514x_detect(decoder);
> > +			if (err) {
> > +				v4l_err(decoder->client,
> > +						"Unable to detect decoder\n");
> > +				return err;
> > +			}
> > +		}
> > +		err |= tvp514x_configure(decoder);
> > +		break;
> > +
> > +	default:
> > +		err = -ENODEV;
> > +		break;
> > +	}
> > +
> > +	return err;
> > +}
> > +
> > +/**
> > + * ioctl_init - V4L2 decoder interface handler for VIDIOC_INT_INIT
> > + * @s: pointer to standard V4L2 device structure
> > + *
> > + * Initialize the decoder device (calls tvp514x_configure())
> > + */
> > +static int ioctl_init(struct v4l2_int_device *s)
> > +{
> > +	struct tvp514x_decoder *decoder = s->priv;
> > +
> > +	/* Set default standard to auto */
> > +	tvp514x_reg_list[REG_VIDEO_STD].val =
> > +	    VIDEO_STD_AUTO_SWITCH_BIT;
> > +
> > +	return tvp514x_configure(decoder);
> > +}
> > +
> > +/**
> > + * ioctl_dev_exit - V4L2 decoder interface handler for vidioc_int_dev_exit_num
> > + * @s: pointer to standard V4L2 device structure
> > + *
> > + * Delinitialise the dev. at slave detach. The complement of ioctl_dev_init.
> > + */
> > +static int ioctl_dev_exit(struct v4l2_int_device *s)
> > +{
> > +	return 0;
> > +}
> > +
> > +/**
> > + * ioctl_dev_init - V4L2 decoder interface handler for vidioc_int_dev_init_num
> > + * @s: pointer to standard V4L2 device structure
> > + *
> > + * Initialise the device when slave attaches to the master. Returns 0 if
> > + * TVP5146/47 device could be found, otherwise returns appropriate error.
> > + */
> > +static int ioctl_dev_init(struct v4l2_int_device *s)
> > +{
> > +	struct tvp514x_decoder *decoder = s->priv;
> > +	int err;
> > +
> > +	err = tvp514x_detect(decoder);
> > +	if (err < 0) {
> > +		v4l_err(decoder->client,
> > +			"Unable to detect decoder\n");
> > +		return err;
> > +	}
> > +
> > +	v4l_info(decoder->client,
> > +		 "chip version 0x%.2x detected\n", decoder->ver);
> > +
> > +	return 0;
> > +}
> > +
> > +static struct v4l2_int_ioctl_desc tvp514x_ioctl_desc[] = {
> > +	{vidioc_int_dev_init_num, (v4l2_int_ioctl_func*) ioctl_dev_init},
> > +	{vidioc_int_dev_exit_num, (v4l2_int_ioctl_func*) ioctl_dev_exit},
> > +	{vidioc_int_s_power_num, (v4l2_int_ioctl_func*) ioctl_s_power},
> > +	{vidioc_int_g_priv_num, (v4l2_int_ioctl_func*) ioctl_g_priv},
> > +	{vidioc_int_g_ifparm_num, (v4l2_int_ioctl_func*) ioctl_g_ifparm},
> > +	{vidioc_int_init_num, (v4l2_int_ioctl_func*) ioctl_init},
> > +	{vidioc_int_enum_fmt_cap_num,
> > +	 (v4l2_int_ioctl_func *) ioctl_enum_fmt_cap},
> > +	{vidioc_int_try_fmt_cap_num,
> > +	 (v4l2_int_ioctl_func *) ioctl_try_fmt_cap},
> > +	{vidioc_int_g_fmt_cap_num,
> > +	 (v4l2_int_ioctl_func *) ioctl_g_fmt_cap},
> > +	{vidioc_int_s_fmt_cap_num,
> > +	 (v4l2_int_ioctl_func *) ioctl_s_fmt_cap},
> > +	{vidioc_int_g_parm_num, (v4l2_int_ioctl_func *) ioctl_g_parm},
> > +	{vidioc_int_s_parm_num, (v4l2_int_ioctl_func *) ioctl_s_parm},
> > +	{vidioc_int_queryctrl_num,
> > +	 (v4l2_int_ioctl_func *) ioctl_queryctrl},
> > +	{vidioc_int_g_ctrl_num, (v4l2_int_ioctl_func *) ioctl_g_ctrl},
> > +	{vidioc_int_s_ctrl_num, (v4l2_int_ioctl_func *) ioctl_s_ctrl},
> > +	{vidioc_int_querystd_num, (v4l2_int_ioctl_func *) ioctl_querystd},
> > +	{vidioc_int_s_std_num, (v4l2_int_ioctl_func *) ioctl_s_std},
> > +	{vidioc_int_s_video_routing_num,
> > +		(v4l2_int_ioctl_func *) ioctl_s_routing},
> > +};
> > +
> > +static struct v4l2_int_slave tvp514x_slave = {
> > +	.ioctls = tvp514x_ioctl_desc,
> > +	.num_ioctls = ARRAY_SIZE(tvp514x_ioctl_desc),
> > +};
> > +
> > +static struct tvp514x_decoder tvp514x_dev = {
> > +	.state = STATE_NOT_DETECTED,
> > +
> > +	.fmt_list = tvp514x_fmt_list,
> > +	.num_fmts = ARRAY_SIZE(tvp514x_fmt_list),
> > +
> > +	.pix = {		/* Default to NTSC 8-bit YUV 422 */
> > +		.width = NTSC_NUM_ACTIVE_PIXELS,
> > +		.height = NTSC_NUM_ACTIVE_LINES,
> > +		.pixelformat = V4L2_PIX_FMT_UYVY,
> > +		.field = V4L2_FIELD_INTERLACED,
> > +		.bytesperline = NTSC_NUM_ACTIVE_PIXELS * 2,
> > +		.sizeimage =
> > +		NTSC_NUM_ACTIVE_PIXELS * 2 * NTSC_NUM_ACTIVE_LINES,
> > +		.colorspace = V4L2_COLORSPACE_SMPTE170M,
> > +		},
> > +
> > +	.current_std = STD_NTSC_MJ,
> > +	.std_list = tvp514x_std_list,
> > +	.num_stds = ARRAY_SIZE(tvp514x_std_list),
> > +
> > +};
> > +
> > +static struct v4l2_int_device tvp514x_int_device = {
> > +	.module = THIS_MODULE,
> > +	.name = TVP514X_MODULE_NAME,
> > +	.priv = &tvp514x_dev,
> > +	.type = v4l2_int_type_slave,
> > +	.u = {
> > +	      .slave = &tvp514x_slave,
> > +	      },
> > +};
> > +
> > +/**
> > + * tvp514x_probe - decoder driver i2c probe handler
> > + * @client: i2c driver client device structure
> > + *
> > + * Register decoder as an i2c client device and V4L2
> > + * device.
> > + */
> > +static int
> > +tvp514x_probe(struct i2c_client *client, const struct i2c_device_id *id)
> > +{
> > +	struct tvp514x_decoder *decoder = &tvp514x_dev;
> > +	int err;
> > +
> > +	/* Check if the adapter supports the needed features */
> > +	if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE_DATA))
> > +		return -EIO;
> > +
> > +	decoder->pdata = client->dev.platform_data;
> > +	if (!decoder->pdata) {
> > +		v4l_err(client, "No platform data\n!!");
> > +		return -ENODEV;
> > +	}
> > +	/*
> > +	 * Fetch platform specific data, and configure the
> > +	 * tvp514x_reg_list[] accordingly. Since this is one
> > +	 * time configuration, no need to preserve.
> > +	 */
> > +	tvp514x_reg_list[REG_OUTPUT_FORMATTER2].val |=
> > +			(decoder->pdata->clk_polarity << 1);
> > +	tvp514x_reg_list[REG_SYNC_CONTROL].val |=
> > +			((decoder->pdata->hs_polarity << 2) |
> > +			(decoder->pdata->vs_polarity << 3));
> > +	/*
> > +	 * Save the id data, required for power up sequence
> > +	 */
> > +	decoder->id = (struct i2c_device_id *)id;
> > +	/* Attach to Master */
> > +	strcpy(tvp514x_int_device.u.slave->attach_to, decoder->pdata->master);
> > +	decoder->v4l2_int_device = &tvp514x_int_device;
> > +	decoder->client = client;
> > +	i2c_set_clientdata(client, decoder);
> > +
> > +	/* Register with V4L2 layer as slave device */
> > +	err = v4l2_int_device_register(decoder->v4l2_int_device);
> > +	if (err) {
> > +		i2c_set_clientdata(client, NULL);
> > +		v4l_err(client,
> > +			"Unable to register to v4l2. Err[%d]\n", err);
> > +
> > +	} else
> > +		v4l_info(client, "Registered to v4l2 master %s!!\n",
> > +				decoder->pdata->master);
> > +
> > +	return 0;
> > +}
> > +
> > +/**
> > + * tvp514x_remove - decoder driver i2c remove handler
> > + * @client: i2c driver client device structure
> > + *
> > + * Unregister decoder as an i2c client device and V4L2
> > + * device. Complement of tvp514x_probe().
> > + */
> > +static int __exit tvp514x_remove(struct i2c_client *client)
> > +{
> > +	struct tvp514x_decoder *decoder = i2c_get_clientdata(client);
> > +
> > +	if (!client->adapter)
> > +		return -ENODEV;	/* our client isn't attached */
> > +
> > +	v4l2_int_device_unregister(decoder->v4l2_int_device);
> > +	i2c_set_clientdata(client, NULL);
> > +
> > +	return 0;
> > +}
> > +/*
> > + * TVP5146 Init/Power on Sequence
> > + */
> > +static const struct tvp514x_reg tvp5146_init_reg_seq[] = {
> > +	{TOK_WRITE, REG_VBUS_ADDRESS_ACCESS1, 0x02},
> > +	{TOK_WRITE, REG_VBUS_ADDRESS_ACCESS2, 0x00},
> > +	{TOK_WRITE, REG_VBUS_ADDRESS_ACCESS3, 0x80},
> > +	{TOK_WRITE, REG_VBUS_DATA_ACCESS_NO_VBUS_ADDR_INCR, 0x01},
> > +	{TOK_WRITE, REG_VBUS_ADDRESS_ACCESS1, 0x60},
> > +	{TOK_WRITE, REG_VBUS_ADDRESS_ACCESS2, 0x00},
> > +	{TOK_WRITE, REG_VBUS_ADDRESS_ACCESS3, 0xB0},
> > +	{TOK_WRITE, REG_VBUS_DATA_ACCESS_NO_VBUS_ADDR_INCR, 0x01},
> > +	{TOK_WRITE, REG_VBUS_DATA_ACCESS_NO_VBUS_ADDR_INCR, 0x00},
> > +	{TOK_WRITE, REG_OPERATION_MODE, 0x01},
> > +	{TOK_WRITE, REG_OPERATION_MODE, 0x00},
> > +};
> > +static const struct tvp514x_init_seq tvp5146_init = {
> > +	.no_regs = ARRAY_SIZE(tvp5146_init_reg_seq),
> > +	.init_reg_seq = tvp5146_init_reg_seq,
> > +};
> > +/*
> > + * TVP5147 Init/Power on Sequence
> > + */
> > +static const struct tvp514x_reg tvp5147_init_reg_seq[] =	{
> > +	{TOK_WRITE, REG_VBUS_ADDRESS_ACCESS1, 0x02},
> > +	{TOK_WRITE, REG_VBUS_ADDRESS_ACCESS2, 0x00},
> > +	{TOK_WRITE, REG_VBUS_ADDRESS_ACCESS3, 0x80},
> > +	{TOK_WRITE, REG_VBUS_DATA_ACCESS_NO_VBUS_ADDR_INCR, 0x01},
> > +	{TOK_WRITE, REG_VBUS_ADDRESS_ACCESS1, 0x60},
> > +	{TOK_WRITE, REG_VBUS_ADDRESS_ACCESS2, 0x00},
> > +	{TOK_WRITE, REG_VBUS_ADDRESS_ACCESS3, 0xB0},
> > +	{TOK_WRITE, REG_VBUS_DATA_ACCESS_NO_VBUS_ADDR_INCR, 0x01},
> > +	{TOK_WRITE, REG_VBUS_ADDRESS_ACCESS1, 0x16},
> > +	{TOK_WRITE, REG_VBUS_ADDRESS_ACCESS2, 0x00},
> > +	{TOK_WRITE, REG_VBUS_ADDRESS_ACCESS3, 0xA0},
> > +	{TOK_WRITE, REG_VBUS_DATA_ACCESS_NO_VBUS_ADDR_INCR, 0x16},
> > +	{TOK_WRITE, REG_VBUS_ADDRESS_ACCESS1, 0x60},
> > +	{TOK_WRITE, REG_VBUS_ADDRESS_ACCESS2, 0x00},
> > +	{TOK_WRITE, REG_VBUS_ADDRESS_ACCESS3, 0xB0},
> > +	{TOK_WRITE, REG_VBUS_DATA_ACCESS_NO_VBUS_ADDR_INCR, 0x00},
> > +	{TOK_WRITE, REG_OPERATION_MODE, 0x01},
> > +	{TOK_WRITE, REG_OPERATION_MODE, 0x00},
> > +};
> > +static const struct tvp514x_init_seq tvp5147_init = {
> > +	.no_regs = ARRAY_SIZE(tvp5147_init_reg_seq),
> > +	.init_reg_seq = tvp5147_init_reg_seq,
> > +};
> > +/*
> > + * TVP5146M2/TVP5147M1 Init/Power on Sequence
> > + */
> > +static const struct tvp514x_reg tvp514xm_init_reg_seq[] = {
> > +	{TOK_WRITE, REG_OPERATION_MODE, 0x01},
> > +	{TOK_WRITE, REG_OPERATION_MODE, 0x00},
> > +};
> > +static const struct tvp514x_init_seq tvp514xm_init = {
> > +	.no_regs = ARRAY_SIZE(tvp514xm_init_reg_seq),
> > +	.init_reg_seq = tvp514xm_init_reg_seq,
> > +};
> > +/*
> > + * I2C Device Table -
> > + *
> > + * name - Name of the actual device/chip.
> > + * driver_data - Driver data
> > + */
> > +static const struct i2c_device_id tvp514x_id[] = {
> > +	{"tvp5146", (unsigned long)&tvp5146_init},
> > +	{"tvp5146m2", (unsigned long)&tvp514xm_init},
> > +	{"tvp5147", (unsigned long)&tvp5147_init},
> > +	{"tvp5147m1", (unsigned long)&tvp514xm_init},
> > +	{},
> > +};
> > +
> > +MODULE_DEVICE_TABLE(i2c, tvp514x_id);
> > +
> > +static struct i2c_driver tvp514x_i2c_driver = {
> > +	.driver = {
> > +		   .name = TVP514X_MODULE_NAME,
> > +		   .owner = THIS_MODULE,
> > +		   },
> > +	.probe = tvp514x_probe,
> > +	.remove = __exit_p(tvp514x_remove),
> > +	.id_table = tvp514x_id,
> > +};
> > +
> > +/**
> > + * tvp514x_init
> > + *
> > + * Module init function
> > + */
> > +static int __init tvp514x_init(void)
> > +{
> > +	return i2c_add_driver(&tvp514x_i2c_driver);
> > +}
> > +
> > +/**
> > + * tvp514x_cleanup
> > + *
> > + * Module exit function
> > + */
> > +static void __exit tvp514x_cleanup(void)
> > +{
> > +	i2c_del_driver(&tvp514x_i2c_driver);
> > +}
> > +
> > +module_init(tvp514x_init);
> > +module_exit(tvp514x_cleanup);
> > +
> > +MODULE_AUTHOR("Texas Instruments");
> > +MODULE_DESCRIPTION("TVP514X linux decoder driver");
> > +MODULE_LICENSE("GPL");
> > diff --git a/drivers/media/video/tvp514x_regs.h b/drivers/media/video/tvp514x_regs.h
> > new file mode 100644
> > index 0000000..351620a
> > --- /dev/null
> > +++ b/drivers/media/video/tvp514x_regs.h
> > @@ -0,0 +1,297 @@
> > +/*
> > + * drivers/media/video/tvp514x_regs.h
> > + *
> > + * Copyright (C) 2008 Texas Instruments Inc
> > + * Author: Vaibhav Hiremath <hvaibhav@ti.com>
> > + *
> > + * Contributors:
> > + *     Sivaraj R <sivaraj@ti.com>
> > + *     Brijesh R Jadav <brijesh.j@ti.com>
> > + *     Hardik Shah <hardik.shah@ti.com>
> > + *     Manjunath Hadli <mrh@ti.com>
> > + *     Karicheri Muralidharan <m-karicheri2@ti.com>
> > + *
> > + * This package is free software; you can redistribute it and/or modify
> > + * it under the terms of the GNU General Public License version 2 as
> > + * published by the Free Software Foundation.
> > + *
> > + * This program is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > + * GNU General Public License for more details.
> > + *
> > + * You should have received a copy of the GNU General Public License
> > + * along with this program; if not, write to the Free Software
> > + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
> > + *
> > + */
> > +
> > +#ifndef _TVP514X_REGS_H
> > +#define _TVP514X_REGS_H
> > +
> > +/*
> > + * TVP5146/47 registers
> > + */
> > +#define REG_INPUT_SEL			(0x00)
> > +#define REG_AFE_GAIN_CTRL		(0x01)
> > +#define REG_VIDEO_STD			(0x02)
> > +#define REG_OPERATION_MODE		(0x03)
> > +#define REG_AUTOSWITCH_MASK		(0x04)
> > +
> > +#define REG_COLOR_KILLER		(0x05)
> > +#define REG_LUMA_CONTROL1		(0x06)
> > +#define REG_LUMA_CONTROL2		(0x07)
> > +#define REG_LUMA_CONTROL3		(0x08)
> > +
> > +#define REG_BRIGHTNESS			(0x09)
> > +#define REG_CONTRAST			(0x0A)
> > +#define REG_SATURATION			(0x0B)
> > +#define REG_HUE				(0x0C)
> > +
> > +#define REG_CHROMA_CONTROL1		(0x0D)
> > +#define REG_CHROMA_CONTROL2		(0x0E)
> > +
> > +/* 0x0F Reserved */
> > +
> > +#define REG_COMP_PR_SATURATION		(0x10)
> > +#define REG_COMP_Y_CONTRAST		(0x11)
> > +#define REG_COMP_PB_SATURATION		(0x12)
> > +
> > +/* 0x13 Reserved */
> > +
> > +#define REG_COMP_Y_BRIGHTNESS		(0x14)
> > +
> > +/* 0x15 Reserved */
> > +
> > +#define REG_AVID_START_PIXEL_LSB	(0x16)
> > +#define REG_AVID_START_PIXEL_MSB	(0x17)
> > +#define REG_AVID_STOP_PIXEL_LSB		(0x18)
> > +#define REG_AVID_STOP_PIXEL_MSB		(0x19)
> > +
> > +#define REG_HSYNC_START_PIXEL_LSB	(0x1A)
> > +#define REG_HSYNC_START_PIXEL_MSB	(0x1B)
> > +#define REG_HSYNC_STOP_PIXEL_LSB	(0x1C)
> > +#define REG_HSYNC_STOP_PIXEL_MSB	(0x1D)
> > +
> > +#define REG_VSYNC_START_LINE_LSB	(0x1E)
> > +#define REG_VSYNC_START_LINE_MSB	(0x1F)
> > +#define REG_VSYNC_STOP_LINE_LSB		(0x20)
> > +#define REG_VSYNC_STOP_LINE_MSB		(0x21)
> > +
> > +#define REG_VBLK_START_LINE_LSB		(0x22)
> > +#define REG_VBLK_START_LINE_MSB		(0x23)
> > +#define REG_VBLK_STOP_LINE_LSB		(0x24)
> > +#define REG_VBLK_STOP_LINE_MSB		(0x25)
> > +
> > +/* 0x26 - 0x27 Reserved */
> > +
> > +#define REG_FAST_SWTICH_CONTROL		(0x28)
> > +
> > +/* 0x29 Reserved */
> > +
> > +#define REG_FAST_SWTICH_SCART_DELAY	(0x2A)
> > +
> > +/* 0x2B Reserved */
> > +
> > +#define REG_SCART_DELAY			(0x2C)
> > +#define REG_CTI_DELAY			(0x2D)
> > +#define REG_CTI_CONTROL			(0x2E)
> > +
> > +/* 0x2F - 0x31 Reserved */
> > +
> > +#define REG_SYNC_CONTROL		(0x32)
> > +#define REG_OUTPUT_FORMATTER1		(0x33)
> > +#define REG_OUTPUT_FORMATTER2		(0x34)
> > +#define REG_OUTPUT_FORMATTER3		(0x35)
> > +#define REG_OUTPUT_FORMATTER4		(0x36)
> > +#define REG_OUTPUT_FORMATTER5		(0x37)
> > +#define REG_OUTPUT_FORMATTER6		(0x38)
> > +#define REG_CLEAR_LOST_LOCK		(0x39)
> > +
> > +#define REG_STATUS1			(0x3A)
> > +#define REG_STATUS2			(0x3B)
> > +
> > +#define REG_AGC_GAIN_STATUS_LSB		(0x3C)
> > +#define REG_AGC_GAIN_STATUS_MSB		(0x3D)
> > +
> > +/* 0x3E Reserved */
> > +
> > +#define REG_VIDEO_STD_STATUS		(0x3F)
> > +#define REG_GPIO_INPUT1			(0x40)
> > +#define REG_GPIO_INPUT2			(0x41)
> > +
> > +/* 0x42 - 0x45 Reserved */
> > +
> > +#define REG_AFE_COARSE_GAIN_CH1		(0x46)
> > +#define REG_AFE_COARSE_GAIN_CH2		(0x47)
> > +#define REG_AFE_COARSE_GAIN_CH3		(0x48)
> > +#define REG_AFE_COARSE_GAIN_CH4		(0x49)
> > +
> > +#define REG_AFE_FINE_GAIN_PB_B_LSB	(0x4A)
> > +#define REG_AFE_FINE_GAIN_PB_B_MSB	(0x4B)
> > +#define REG_AFE_FINE_GAIN_Y_G_CHROMA_LSB	(0x4C)
> > +#define REG_AFE_FINE_GAIN_Y_G_CHROMA_MSB	(0x4D)
> > +#define REG_AFE_FINE_GAIN_PR_R_LSB	(0x4E)
> > +#define REG_AFE_FINE_GAIN_PR_R_MSB	(0x4F)
> > +#define REG_AFE_FINE_GAIN_CVBS_LUMA_LSB	(0x50)
> > +#define REG_AFE_FINE_GAIN_CVBS_LUMA_MSB	(0x51)
> > +
> > +/* 0x52 - 0x68 Reserved */
> > +
> > +#define REG_FBIT_VBIT_CONTROL1		(0x69)
> > +
> > +/* 0x6A - 0x6B Reserved */
> > +
> > +#define REG_BACKEND_AGC_CONTROL		(0x6C)
> > +
> > +/* 0x6D - 0x6E Reserved */
> > +
> > +#define REG_AGC_DECREMENT_SPEED_CONTROL	(0x6F)
> > +#define REG_ROM_VERSION			(0x70)
> > +
> > +/* 0x71 - 0x73 Reserved */
> > +
> > +#define REG_AGC_WHITE_PEAK_PROCESSING	(0x74)
> > +#define REG_FBIT_VBIT_CONTROL2		(0x75)
> > +#define REG_VCR_TRICK_MODE_CONTROL	(0x76)
> > +#define REG_HORIZONTAL_SHAKE_INCREMENT	(0x77)
> > +#define REG_AGC_INCREMENT_SPEED		(0x78)
> > +#define REG_AGC_INCREMENT_DELAY		(0x79)
> > +
> > +/* 0x7A - 0x7F Reserved */
> > +
> > +#define REG_CHIP_ID_MSB			(0x80)
> > +#define REG_CHIP_ID_LSB			(0x81)
> > +
> > +/* 0x82 Reserved */
> > +
> > +#define REG_CPLL_SPEED_CONTROL		(0x83)
> > +
> > +/* 0x84 - 0x96 Reserved */
> > +
> > +#define REG_STATUS_REQUEST		(0x97)
> > +
> > +/* 0x98 - 0x99 Reserved */
> > +
> > +#define REG_VERTICAL_LINE_COUNT_LSB	(0x9A)
> > +#define REG_VERTICAL_LINE_COUNT_MSB	(0x9B)
> > +
> > +/* 0x9C - 0x9D Reserved */
> > +
> > +#define REG_AGC_DECREMENT_DELAY		(0x9E)
> > +
> > +/* 0x9F - 0xB0 Reserved */
> > +
> > +#define REG_VDP_TTX_FILTER_1_MASK1	(0xB1)
> > +#define REG_VDP_TTX_FILTER_1_MASK2	(0xB2)
> > +#define REG_VDP_TTX_FILTER_1_MASK3	(0xB3)
> > +#define REG_VDP_TTX_FILTER_1_MASK4	(0xB4)
> > +#define REG_VDP_TTX_FILTER_1_MASK5	(0xB5)
> > +#define REG_VDP_TTX_FILTER_2_MASK1	(0xB6)
> > +#define REG_VDP_TTX_FILTER_2_MASK2	(0xB7)
> > +#define REG_VDP_TTX_FILTER_2_MASK3	(0xB8)
> > +#define REG_VDP_TTX_FILTER_2_MASK4	(0xB9)
> > +#define REG_VDP_TTX_FILTER_2_MASK5	(0xBA)
> > +#define REG_VDP_TTX_FILTER_CONTROL	(0xBB)
> > +#define REG_VDP_FIFO_WORD_COUNT		(0xBC)
> > +#define REG_VDP_FIFO_INTERRUPT_THRLD	(0xBD)
> > +
> > +/* 0xBE Reserved */
> > +
> > +#define REG_VDP_FIFO_RESET		(0xBF)
> > +#define REG_VDP_FIFO_OUTPUT_CONTROL	(0xC0)
> > +#define REG_VDP_LINE_NUMBER_INTERRUPT	(0xC1)
> > +#define REG_VDP_PIXEL_ALIGNMENT_LSB	(0xC2)
> > +#define REG_VDP_PIXEL_ALIGNMENT_MSB	(0xC3)
> > +
> > +/* 0xC4 - 0xD5 Reserved */
> > +
> > +#define REG_VDP_LINE_START		(0xD6)
> > +#define REG_VDP_LINE_STOP		(0xD7)
> > +#define REG_VDP_GLOBAL_LINE_MODE	(0xD8)
> > +#define REG_VDP_FULL_FIELD_ENABLE	(0xD9)
> > +#define REG_VDP_FULL_FIELD_MODE		(0xDA)
> > +
> > +/* 0xDB - 0xDF Reserved */
> > +
> > +#define REG_VBUS_DATA_ACCESS_NO_VBUS_ADDR_INCR	(0xE0)
> > +#define REG_VBUS_DATA_ACCESS_VBUS_ADDR_INCR	(0xE1)
> > +#define REG_FIFO_READ_DATA			(0xE2)
> > +
> > +/* 0xE3 - 0xE7 Reserved */
> > +
> > +#define REG_VBUS_ADDRESS_ACCESS1	(0xE8)
> > +#define REG_VBUS_ADDRESS_ACCESS2	(0xE9)
> > +#define REG_VBUS_ADDRESS_ACCESS3	(0xEA)
> > +
> > +/* 0xEB - 0xEF Reserved */
> > +
> > +#define REG_INTERRUPT_RAW_STATUS0	(0xF0)
> > +#define REG_INTERRUPT_RAW_STATUS1	(0xF1)
> > +#define REG_INTERRUPT_STATUS0		(0xF2)
> > +#define REG_INTERRUPT_STATUS1		(0xF3)
> > +#define REG_INTERRUPT_MASK0		(0xF4)
> > +#define REG_INTERRUPT_MASK1		(0xF5)
> > +#define REG_INTERRUPT_CLEAR0		(0xF6)
> > +#define REG_INTERRUPT_CLEAR1		(0xF7)
> > +
> > +/* 0xF8 - 0xFF Reserved */
> > +
> > +/*
> > + * Mask and bit definitions of TVP5146/47 registers
> > + */
> > +/* The ID values we are looking for */
> > +#define TVP514X_CHIP_ID_MSB		(0x51)
> > +#define TVP5146_CHIP_ID_LSB		(0x46)
> > +#define TVP5147_CHIP_ID_LSB		(0x47)
> > +
> > +#define VIDEO_STD_MASK			(0x07)
> > +#define VIDEO_STD_AUTO_SWITCH_BIT	(0x00)
> > +#define VIDEO_STD_NTSC_MJ_BIT		(0x01)
> > +#define VIDEO_STD_PAL_BDGHIN_BIT	(0x02)
> > +#define VIDEO_STD_PAL_M_BIT		(0x03)
> > +#define VIDEO_STD_PAL_COMBINATION_N_BIT	(0x04)
> > +#define VIDEO_STD_NTSC_4_43_BIT		(0x05)
> > +#define VIDEO_STD_SECAM_BIT		(0x06)
> > +#define VIDEO_STD_PAL_60_BIT		(0x07)
> > +
> > +/*
> > + * Status bit
> > + */
> > +#define STATUS_TV_VCR_BIT		(1<<0)
> > +#define STATUS_HORZ_SYNC_LOCK_BIT	(1<<1)
> > +#define STATUS_VIRT_SYNC_LOCK_BIT	(1<<2)
> > +#define STATUS_CLR_SUBCAR_LOCK_BIT	(1<<3)
> > +#define STATUS_LOST_LOCK_DETECT_BIT	(1<<4)
> > +#define STATUS_FEILD_RATE_BIT		(1<<5)
> > +#define STATUS_LINE_ALTERNATING_BIT	(1<<6)
> > +#define STATUS_PEAK_WHITE_DETECT_BIT	(1<<7)
> > +
> > +/* Tokens for register write */
> > +#define TOK_WRITE                       (0)     /* token for write operation */
> > +#define TOK_TERM                        (1)     /* terminating token */
> > +#define TOK_DELAY                       (2)     /* delay token for reg list */
> > +#define TOK_SKIP                        (3)     /* token to skip a register */
> > +/**
> > + * struct tvp514x_reg - Structure for TVP5146/47 register initialization values
> > + * @token - Token: TOK_WRITE, TOK_TERM etc..
> > + * @reg - Register offset
> > + * @val - Register Value for TOK_WRITE or delay in ms for TOK_DELAY
> > + */
> > +struct tvp514x_reg {
> > +	u8 token;
> > +	u8 reg;
> > +	u32 val;
> > +};
> > +
> > +/**
> > + * struct tvp514x_init_seq - Structure for TVP5146/47/46M2/47M1 power up
> > + *		Sequence.
> > + * @ no_regs - Number of registers to write for power up sequence.
> > + * @ init_reg_seq - Array of registers and respective value to write.
> > + */
> > +struct tvp514x_init_seq {
> > +	unsigned int no_regs;
> > +	const struct tvp514x_reg *init_reg_seq;
> > +};
> > +#endif				/* ifndef _TVP514X_REGS_H */
> > diff --git a/include/media/tvp514x.h b/include/media/tvp514x.h
> > new file mode 100755
> > index 0000000..5e7ee96
> > --- /dev/null
> > +++ b/include/media/tvp514x.h
> > @@ -0,0 +1,118 @@
> > +/*
> > + * drivers/media/video/tvp514x.h
> > + *
> > + * Copyright (C) 2008 Texas Instruments Inc
> > + * Author: Vaibhav Hiremath <hvaibhav@ti.com>
> > + *
> > + * Contributors:
> > + *     Sivaraj R <sivaraj@ti.com>
> > + *     Brijesh R Jadav <brijesh.j@ti.com>
> > + *     Hardik Shah <hardik.shah@ti.com>
> > + *     Manjunath Hadli <mrh@ti.com>
> > + *     Karicheri Muralidharan <m-karicheri2@ti.com>
> > + *
> > + * This package is free software; you can redistribute it and/or modify
> > + * it under the terms of the GNU General Public License version 2 as
> > + * published by the Free Software Foundation.
> > + *
> > + * This program is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > + * GNU General Public License for more details.
> > + *
> > + * You should have received a copy of the GNU General Public License
> > + * along with this program; if not, write to the Free Software
> > + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
> > + *
> > + */
> > +
> > +#ifndef _TVP514X_H
> > +#define _TVP514X_H
> > +
> > +/*
> > + * Other macros
> > + */
> > +#define TVP514X_MODULE_NAME		"tvp514x"
> > +
> > +#define TVP514X_XCLK_BT656		(27000000)
> > +
> > +/* Number of pixels and number of lines per frame for different standards */
> > +#define NTSC_NUM_ACTIVE_PIXELS		(720)
> > +#define NTSC_NUM_ACTIVE_LINES		(480)
> > +#define PAL_NUM_ACTIVE_PIXELS		(720)
> > +#define PAL_NUM_ACTIVE_LINES		(576)
> > +
> > +/**
> > + * enum tvp514x_input - enum for different decoder input pin
> > + *		configuration.
> > + */
> > +enum tvp514x_input {
> > +	/*
> > +	 * CVBS input selection
> > +	 */
> > +	INPUT_CVBS_VI1A = 0x0,
> > +	INPUT_CVBS_VI1B,
> > +	INPUT_CVBS_VI1C,
> > +	INPUT_CVBS_VI2A = 0x04,
> > +	INPUT_CVBS_VI2B,
> > +	INPUT_CVBS_VI2C,
> > +	INPUT_CVBS_VI3A = 0x08,
> > +	INPUT_CVBS_VI3B,
> > +	INPUT_CVBS_VI3C,
> > +	INPUT_CVBS_VI4A = 0x0C,
> > +	/*
> > +	 * S-Video input selection
> > +	 */
> > +	INPUT_SVIDEO_VI2A_VI1A = 0x44,
> > +	INPUT_SVIDEO_VI2B_VI1B,
> > +	INPUT_SVIDEO_VI2C_VI1C,
> > +	INPUT_SVIDEO_VI2A_VI3A = 0x54,
> > +	INPUT_SVIDEO_VI2B_VI3B,
> > +	INPUT_SVIDEO_VI2C_VI3C,
> > +	INPUT_SVIDEO_VI4A_VI1A = 0x4C,
> > +	INPUT_SVIDEO_VI4A_VI1B,
> > +	INPUT_SVIDEO_VI4A_VI1C,
> > +	INPUT_SVIDEO_VI4A_VI3A = 0x5C,
> > +	INPUT_SVIDEO_VI4A_VI3B,
> > +	INPUT_SVIDEO_VI4A_VI3C,
> > +
> > +	/* Need to add entries for
> > +	 * RGB, YPbPr and SCART.
> > +	 */
> > +	INPUT_INVALID
> > +};
> > +
> > +/**
> > + * enum tvp514x_output - enum for output format
> > + *			supported.
> > + *
> > + */
> > +enum tvp514x_output {
> > +	OUTPUT_10BIT_422_EMBEDDED_SYNC = 0,
> > +	OUTPUT_20BIT_422_SEPERATE_SYNC,
> > +	OUTPUT_10BIT_422_SEPERATE_SYNC = 3,
> > +	OUTPUT_INVALID
> > +};
> > +
> > +/**
> > + * struct tvp514x_platform_data - Platform data values and access functions.
> > + * @power_set: Power state access function, zero is off, non-zero is on.
> > + * @ifparm: Interface parameters access function.
> > + * @priv_data_set: Device private data (pointer) access function.
> > + * @clk_polarity: Clock polarity of the current interface.
> > + * @ hs_polarity: HSYNC Polarity configuration for current interface.
> > + * @ vs_polarity: VSYNC Polarity configuration for current interface.
> > + */
> > +struct tvp514x_platform_data {
> > +	char *master;
> > +	int (*power_set) (enum v4l2_power on);
> > +	int (*ifparm) (struct v4l2_ifparm *p);
> > +	int (*priv_data_set) (void *);
> > +	/* Interface control params */
> > +	bool clk_polarity;
> > +	bool hs_polarity;
> > +	bool vs_polarity;
> > +};
> > +
> > +
> > +#endif				/* ifndef _TVP514X_H */
> > --
> > 1.5.6
> > 
> > 
> E-Mail-Nachricht-Anlage
> > -------- Weitergeleitete Nachricht --------
> > Von: Hiremath, Vaibhav <hvaibhav@ti.com>
> > An: Hiremath, Vaibhav <hvaibhav@ti.com>, video4linux-list@redhat.com
> > <video4linux-list@redhat.com>
> > Kopie: davinci-linux-open-source-bounces@linux.davincidsp.com
> > <davinci-linux-open-source-bounces@linux.davincidsp.com>, Karicheri,
> > Muralidharan <m-karicheri2@ti.com>, linux-omap@vger.kernel.org
> > <linux-omap@vger.kernel.org>
> > Betreff: RE: [PATCH 1/2] Addition of Set Routing ioctl support[V5]
> > Datum: Fri, 5 Dec 2008 18:29:00 +0530
> > 
> > 
> > Thanks,
> > Vaibhav Hiremath
> > 
> > > -----Original Message-----
> > > From: Hiremath, Vaibhav
> > > Sent: Friday, December 05, 2008 6:24 PM
> > > To: video4linux-list@redhat.com
> > > Cc: linux-omap@vger.kernel.org; davinci-linux-open-source-
> > > bounces@linux.davincidsp.com; Hiremath, Vaibhav; Jadav, Brijesh R;
> > > Shah, Hardik; Hadli, Manjunath; R, Sivaraj; Karicheri, Muralidharan
> > > Subject: [PATCH 1/2] Addition of Set Routing ioctl support[V5]
> > > 
> > > From: Vaibhav Hiremath <hvaibhav@ti.com>
> > > 
> > > Fixed review comments:
> > > 
> > > g_routing:
> > >         Removed g_routing, since it was not required
> > >         at decoder level. Same can be handled at master
> > >         level.
> > > 
> > > Signed-off-by: Brijesh Jadav <brijesh.j@ti.com>
> > > Signed-off-by: Hardik Shah <hardik.shah@ti.com>
> > > Signed-off-by: Manjunath Hadli <mrh@ti.com>
> > > Signed-off-by: R Sivaraj <sivaraj@ti.com>
> > > Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
> > > Signed-off-by: Karicheri Muralidharan <m-karicheri2@ti.com>
> > > ---
> > >  include/media/v4l2-int-device.h |    6 ++++++
> > >  1 files changed, 6 insertions(+), 0 deletions(-)
> > > 
> > > diff --git a/include/media/v4l2-int-device.h b/include/media/v4l2-
> > > int-device.h
> > > index 9c2df41..ecda3c7 100644
> > > --- a/include/media/v4l2-int-device.h
> > > +++ b/include/media/v4l2-int-device.h
> > > @@ -183,6 +183,9 @@ enum v4l2_int_ioctl_num {
> > >  	vidioc_int_s_crop_num,
> > >  	vidioc_int_g_parm_num,
> > >  	vidioc_int_s_parm_num,
> > > +	vidioc_int_querystd_num,
> > > +	vidioc_int_s_std_num,
> > > +	vidioc_int_s_video_routing_num,
> > > 
> > >  	/*
> > >  	 *
> > > @@ -284,6 +287,9 @@ V4L2_INT_WRAPPER_1(g_crop, struct v4l2_crop, *);
> > >  V4L2_INT_WRAPPER_1(s_crop, struct v4l2_crop, *);
> > >  V4L2_INT_WRAPPER_1(g_parm, struct v4l2_streamparm, *);
> > >  V4L2_INT_WRAPPER_1(s_parm, struct v4l2_streamparm, *);
> > > +V4L2_INT_WRAPPER_1(querystd, v4l2_std_id, *);
> > > +V4L2_INT_WRAPPER_1(s_std, v4l2_std_id, *);
> > > +V4L2_INT_WRAPPER_1(s_video_routing, struct v4l2_routing, *);
> > > 
> > [Hiremath, Vaibhav] I believe our mail-server is changing the patch for tabs and spaces, not sure exactly but the original patch doesn't disturb like this.
> > 
> > Sending the patch as an attachment.
> > 
> > >  V4L2_INT_WRAPPER_0(dev_init);
> > >  V4L2_INT_WRAPPER_0(dev_exit);
> > > --
> > > 1.5.6
> > 
> E-Mail-Nachricht-Anlage
> > -------- Weitergeleitete Nachricht --------
> > Von: Hans Verkuil <hverkuil@xs4all.nl>
> > An: v4l-dvb maintainer list <v4l-dvb-maintainer@linuxtv.org>
> > Kopie: v4l <video4linux-list@redhat.com>, linux-omap@vger.kernel.org
> > Mailing List <linux-omap@vger.kernel.org>,
> > davinci-linux-open-source-bounces@linux.davincidsp.com, Mauro
> > Carvalho Chehab <mchehab@infradead.org>
> > Betreff: [PULL] http://www.linuxtv.org/hg/~hverkuil/v4l-dvb
> > Datum: Fri, 5 Dec 2008 14:43:06 +0100
> > 
> > Hi Mauro,
> > 
> > Please pull from http://www.linuxtv.org/hg/~hverkuil/v4l-dvb for the 
> > following:
> > 
> > - omap2: add OMAP2 camera driver.
> > - v4l2-int-if: add three new ioctls for std handling and routing
> > - v4l: add new tvp514x I2C video decoder driver
> > 
> > Thanks to Nokia and TI for these drivers!
> > 
> > Regards,
> > 
> >         Hans
> > 
> > diffstat:
> >  b/linux/drivers/media/video/omap24xxcam-dma.c |  601 ++++++++
> >  b/linux/drivers/media/video/omap24xxcam.c     | 1908 
> > ++++++++++++++++++++++++++
> >  b/linux/drivers/media/video/omap24xxcam.h     |  593 ++++++++
> >  b/linux/drivers/media/video/tvp514x.c         | 1569 
> > +++++++++++++++++++++
> >  b/linux/drivers/media/video/tvp514x_regs.h    |  297 ++++
> >  b/linux/include/media/tvp514x.h               |  118 +
> >  linux/drivers/media/video/Kconfig             |   18
> >  linux/drivers/media/video/Makefile            |    4
> >  linux/include/media/v4l2-int-device.h         |    6
> >  9 files changed, 5114 insertions(+)
> > 
> E-Mail-Nachricht-Anlage
> > -------- Weitergeleitete Nachricht --------
> > Von: Devin Heitmueller <devin.heitmueller@gmail.com>
> > An: Erik Tollerud <erik.tollerud@gmail.com>
> > Kopie: video4linux-list@redhat.com
> > Betreff: Re: Pinnacle HDTV Ultimate USB
> > Datum: Fri, 5 Dec 2008 08:54:24 -0500
> > 
> > On Fri, Dec 5, 2008 at 2:22 AM, Erik Tollerud <erik.tollerud@gmail.com> wrote:
> > > I noticed there was a post last month in the archives stating that the
> > > drivers for the Pinnacle HDTV Ultimate were in the works... has there
> > > been any news on this front?  (I'd be happy to help with testing, if
> > > necessary).
> > 
> > Hello Erik,
> > 
> > I am continuing to work out the NDA issues for the Broadcom and NXP
> > components, but I received word this morning from Pinnacle that there
> > has been some forward progress.
> > 
> > So it's *very* slow going, but the answer is "yes".
> > 
> > Devin
> > 
> E-Mail-Nachricht-Anlage
> > -------- Weitergeleitete Nachricht --------
> > Von: Brian Rosenberger <brian@brutex.de>
> > An: video4linux-list@redhat.com
> > Betreff: Pinnacle PCTV USB (DVB-T device [eb1a:2870])
> > Datum: Fri, 05 Dec 2008 17:10:15 +0100
> > 
> > Hi,
> > 
> > I am trying to get my Pinnacle PCTV USB (DVB-T device [eb1a:2870]) to
> > work. I fetched sources from http://linuxtv.org/hg/v4l-dvb and then did
> > a make, make install and make load. Everything went fine as far my
> > understanding is (yes with reboot in between).
> > Next I plugged the usb stick and checked dmesg (see below). I am a bit
> > stuck right now, I did try some card=xx variants, but /dev/dvb isn't
> > created.
> > 
> > What are the next steps?
> > 
> > Thanks
> > Brian
> > 
> > 
> > lsusb:
> > Bus 001 Device 009: ID eb1a:2870 eMPIA Technology, Inc.
> > 
> > dmesg:
> > [ 1056.236017] usb 1-2: new high speed USB device using ehci_hcd and
> > address 9
> > [ 1056.372377] usb 1-2: configuration #1 chosen from 1 choice
> > [ 1056.373501] em28xx: New device USB 2870 Device @ 480 Mbps (eb1a:2870,
> > interface 0, class 0)
> > [ 1056.373508] em28xx #0: Identified as Unknown EM2750/28xx video
> > grabber (card=1)
> > [ 1056.375238] em28xx #0: em28xx chip ID = 35
> > [ 1056.415407] compat_ioctl32: exports duplicate symbol
> > v4l_compat_ioctl32 (owned by v4l2_compat_ioctl32)
> > [ 1056.703611] Chip ID is not zero. It is not a TEA5767
> > [ 1056.703669] tuner' 5-0060: chip found @ 0xc0 (em28xx #0)
> > [ 1056.746239] em28xx #0: i2c eeprom 00: 1a eb 67 95 1a eb 70 28 c0 12
> > 81 00 6a 22 00 00
> > [ 1056.746246] em28xx #0: i2c eeprom 10: 00 00 04 57 02 0d 00 00 00 00
> > 00 00 00 00 00 00
> > [ 1056.746252] em28xx #0: i2c eeprom 20: 44 00 00 00 f0 10 02 00 00 00
> > 00 00 5b 00 00 00
> > [ 1056.746256] em28xx #0: i2c eeprom 30: 00 00 20 40 20 80 02 20 01 01
> > 00 00 27 e6 39 4a
> > [ 1056.746261] em28xx #0: i2c eeprom 40: 00 00 00 00 00 00 00 00 00 00
> > 00 00 00 00 00 00
> > [ 1056.746266] em28xx #0: i2c eeprom 50: 00 00 00 00 00 00 00 00 00 00
> > 00 00 00 00 00 00
> > [ 1056.746271] em28xx #0: i2c eeprom 60: 00 00 00 00 00 00 00 00 00 00
> > 22 03 55 00 53 00
> > [ 1056.746276] em28xx #0: i2c eeprom 70: 42 00 20 00 32 00 38 00 37 00
> > 30 00 20 00 44 00
> > [ 1056.746281] em28xx #0: i2c eeprom 80: 65 00 76 00 69 00 63 00 65 00
> > 00 00 00 00 00 00
> > [ 1056.746286] em28xx #0: i2c eeprom 90: 00 00 00 00 00 00 00 00 00 00
> > 00 00 00 00 00 00
> > [ 1056.746291] em28xx #0: i2c eeprom a0: 00 00 00 00 00 00 00 00 00 00
> > 00 00 00 00 00 00
> > [ 1056.746295] em28xx #0: i2c eeprom b0: 00 00 00 00 00 00 00 00 00 00
> > 00 00 00 00 00 00
> > [ 1056.746300] em28xx #0: i2c eeprom c0: 00 00 00 00 00 00 00 00 00 00
> > 00 00 00 00 00 00
> > [ 1056.746305] em28xx #0: i2c eeprom d0: 00 00 00 00 00 00 00 00 00 00
> > 00 00 00 00 00 00
> > [ 1056.746310] em28xx #0: i2c eeprom e0: 00 00 00 00 00 00 00 00 00 00
> > 00 00 00 00 00 00
> > [ 1056.746315] em28xx #0: i2c eeprom f0: 00 00 00 00 00 00 00 00 00 00
> > 00 00 00 00 00 00
> > [ 1056.746321] em28xx #0: EEPROM ID= 0x9567eb1a, EEPROM hash =
> > 0x391183c3
> > [ 1056.746322] em28xx #0: EEPROM info:
> > [ 1056.746323] em28xx #0:	No audio on board.
> > [ 1056.746324] em28xx #0:	500mA max power
> > [ 1056.746325] em28xx #0:	Table at 0x04, strings=0x226a, 0x0000, 0x0000
> > [ 1056.793489] em28xx #0: found i2c device @ 0xa0 [eeprom]
> > [ 1056.799989] em28xx #0: found i2c device @ 0xc0 [tuner (analog)]
> > [ 1056.810365] em28xx #0: Your board has no unique USB ID and thus need
> > a hint to be detected.
> > [ 1056.810370] em28xx #0: You may try to use card=<n> insmod option to
> > workaround that.
> > [ 1056.810371] em28xx #0: Please send an email with this log to:
> > [ 1056.810372] em28xx #0: 	V4L Mailing List
> > <video4linux-list@redhat.com>
> > [ 1056.810373] em28xx #0: Board eeprom hash is 0x391183c3
> > [ 1056.810375] em28xx #0: Board i2c devicelist hash is 0x4b800080
> > [ 1056.810376] em28xx #0: Here is a list of valid choices for the
> > card=<n> insmod option:
> > [ 1056.810377] em28xx #0:     card=0 -> Unknown EM2800 video grabber
> > [ 1056.810379] em28xx #0:     card=1 -> Unknown EM2750/28xx video
> > grabber
> > [ 1056.810380] em28xx #0:     card=2 -> Terratec Cinergy 250 USB
> > [ 1056.810381] em28xx #0:     card=3 -> Pinnacle PCTV USB 2
> > [ 1056.810383] em28xx #0:     card=4 -> Hauppauge WinTV USB 2
> > [ 1056.810384] em28xx #0:     card=5 -> MSI VOX USB 2.0
> > [ 1056.810385] em28xx #0:     card=6 -> Terratec Cinergy 200 USB
> > [ 1056.810386] em28xx #0:     card=7 -> Leadtek Winfast USB II
> > [ 1056.810388] em28xx #0:     card=8 -> Kworld USB2800
> > [ 1056.810389] em28xx #0:     card=9 -> Pinnacle Dazzle DVC 90/DVC 100
> > [ 1056.810390] em28xx #0:     card=10 -> Hauppauge WinTV HVR 900
> > [ 1056.810392] em28xx #0:     card=11 -> Terratec Hybrid XS
> > [ 1056.810393] em28xx #0:     card=12 -> Kworld PVR TV 2800 RF
> > [ 1056.810394] em28xx #0:     card=13 -> Terratec Prodigy XS
> > [ 1056.810395] em28xx #0:     card=14 -> Pixelview Prolink PlayTV USB
> > 2.0
> > [ 1056.810397] em28xx #0:     card=15 -> V-Gear PocketTV
> > [ 1056.810398] em28xx #0:     card=16 -> Hauppauge WinTV HVR 950
> > [ 1056.810399] em28xx #0:     card=17 -> Pinnacle PCTV HD Pro Stick
> > [ 1056.810401] em28xx #0:     card=18 -> Hauppauge WinTV HVR 900 (R2)
> > [ 1056.810402] em28xx #0:     card=19 -> PointNix Intra-Oral Camera
> > [ 1056.810403] em28xx #0:     card=20 -> AMD ATI TV Wonder HD 600
> > [ 1056.810405] em28xx #0:     card=21 -> eMPIA Technology, Inc. GrabBeeX
> > + Video Encoder
> > [ 1056.810406] em28xx #0:     card=22 -> Unknown EM2750/EM2751 webcam
> > grabber
> > [ 1056.810407] em28xx #0:     card=23 -> Huaqi DLCW-130
> > [ 1056.810409] em28xx #0:     card=24 -> D-Link DUB-T210 TV Tuner
> > [ 1056.810410] em28xx #0:     card=25 -> Gadmei UTV310
> > [ 1056.810411] em28xx #0:     card=26 -> Hercules Smart TV USB 2.0
> > [ 1056.810412] em28xx #0:     card=27 -> Pinnacle PCTV USB 2 (Philips
> > FM1216ME)
> > [ 1056.810414] em28xx #0:     card=28 -> Leadtek Winfast USB II Deluxe
> > [ 1056.810415] em28xx #0:     card=29 -> Pinnacle Dazzle DVC 100
> > [ 1056.810416] em28xx #0:     card=30 -> Videology 20K14XUSB USB2.0
> > [ 1056.810418] em28xx #0:     card=31 -> Usbgear VD204v9
> > [ 1056.810419] em28xx #0:     card=32 -> Supercomp USB 2.0 TV
> > [ 1056.810420] em28xx #0:     card=33 -> SIIG AVTuner-PVR/Prolink PlayTV
> > USB 2.0
> > [ 1056.810422] em28xx #0:     card=34 -> Terratec Cinergy A Hybrid XS
> > [ 1056.810423] em28xx #0:     card=35 -> Typhoon DVD Maker
> > [ 1056.810424] em28xx #0:     card=36 -> NetGMBH Cam
> > [ 1056.810426] em28xx #0:     card=37 -> Gadmei UTV330
> > [ 1056.810427] em28xx #0:     card=38 -> Yakumo MovieMixer
> > [ 1056.810428] em28xx #0:     card=39 -> KWorld PVRTV 300U
> > [ 1056.810429] em28xx #0:     card=40 -> Plextor ConvertX PX-TV100U
> > [ 1056.810430] em28xx #0:     card=41 -> Kworld 350 U DVB-T
> > [ 1056.810432] em28xx #0:     card=42 -> Kworld 355 U DVB-T
> > [ 1056.810433] em28xx #0:     card=43 -> Terratec Cinergy T XS
> > [ 1056.810434] em28xx #0:     card=44 -> Terratec Cinergy T XS (MT2060)
> > [ 1056.810436] em28xx #0:     card=45 -> Pinnacle PCTV DVB-T
> > [ 1056.810437] em28xx #0:     card=46 -> Compro, VideoMate U3
> > [ 1056.810438] em28xx #0:     card=47 -> KWorld DVB-T 305U
> > [ 1056.810439] em28xx #0:     card=48 -> KWorld DVB-T 310U
> > [ 1056.810440] em28xx #0:     card=49 -> MSI DigiVox A/D
> > [ 1056.810442] em28xx #0:     card=50 -> MSI DigiVox A/D II
> > [ 1056.810443] em28xx #0:     card=51 -> Terratec Hybrid XS Secam
> > [ 1056.810444] em28xx #0:     card=52 -> DNT DA2 Hybrid
> > [ 1056.810445] em28xx #0:     card=53 -> Pinnacle Hybrid Pro
> > [ 1056.810447] em28xx #0:     card=54 -> Kworld VS-DVB-T 323UR
> > [ 1056.810448] em28xx #0:     card=55 -> Terratec Hybrid XS (em2882)
> > [ 1056.810449] em28xx #0:     card=56 -> Pinnacle Hybrid Pro (2)
> > [ 1056.810450] em28xx #0:     card=57 -> Kworld PlusTV HD Hybrid 330
> > [ 1056.810452] em28xx #0:     card=58 -> Compro VideoMate ForYou/Stereo
> > [ 1056.810453] em28xx #0:     card=59 -> Pinnacle PCTV HD Mini
> > [ 1056.824367] em28xx #0: Config register raw data: 0xc0
> > [ 1056.824368] em28xx #0: No AC97 audio processor
> > [ 1057.156130] em28xx #0: V4L2 device registered as /dev/video1
> > and /dev/vbi0
> > [ 1057.156136] em28xx-audio.c: probing for em28x1 non standard usbaudio
> > [ 1057.156137] em28xx-audio.c: Copyright (C) 2006 Markus Rechberger
> > [ 1057.169918] compat_ioctl32: exports duplicate symbol
> > v4l_compat_ioctl32 (owned by v4l2_compat_ioctl32)
> > 
> > 
> > 
> E-Mail-Nachricht-Anlage
> > -------- Weitergeleitete Nachricht --------
> > Von: Devin Heitmueller <devin.heitmueller@gmail.com>
> > An: Brian Rosenberger <brian@brutex.de>
> > Kopie: video4linux-list@redhat.com
> > Betreff: Re: Pinnacle PCTV USB (DVB-T device [eb1a:2870])
> > Datum: Fri, 5 Dec 2008 11:22:10 -0500
> > 
> > On Fri, Dec 5, 2008 at 11:10 AM, Brian Rosenberger <brian@brutex.de> wrote:
> > > Hi,
> > >
> > > I am trying to get my Pinnacle PCTV USB (DVB-T device [eb1a:2870]) to
> > > work. I fetched sources from http://linuxtv.org/hg/v4l-dvb and then did
> > > a make, make install and make load. Everything went fine as far my
> > > understanding is (yes with reboot in between).
> > > Next I plugged the usb stick and checked dmesg (see below). I am a bit
> > > stuck right now, I did try some card=xx variants, but /dev/dvb isn't
> > > created.
> > >
> > > What are the next steps?
> > >
> > > Thanks
> > > Brian
> > >
> > 
> > The error you described occurs when a vendor uses Empia's default USB
> > ID and we don't have a profile for the device in the driver (so we
> > know things like the correct GPIOs to be set, etc).
> > 
> > Do you know what tuner chip this device contains?  Which demodulator?
> > If not, please open the device and take photos, so we can build a
> > device profile.
> > 
> > Secondly, we need to know what GPIO mapping is needed.  If you could
> > please get a USB capture using "SniffUSB 2.0" for Windows after
> > opening the TV application, we should be able to get this device
> > working under Linux.
> > 
> > I would recommend you figure out what demod/tuner it has first before
> > doing the Windows USB trace.  This will allow us to confirm that the
> > demod and tuner drivers are available before you go through the work
> > of getting the Windows trace.
> > 
> > Regards,
> > 
> > Devin
> > 
> --
> video4linux-list mailing list
> Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
> https://www.redhat.com/mailman/listinfo/video4linux-list

--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2008-09-28  5:06 Reg Clemens
  0 siblings, 0 replies; 278+ messages in thread
From: Reg Clemens @ 2008-09-28  5:06 UTC (permalink / raw)
  To: linux-kernel

help

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2008-08-13  9:26 Help Boris Shteinbock
@ 2008-08-13 12:02 ` Arnd Bergmann
  0 siblings, 0 replies; 278+ messages in thread
From: Arnd Bergmann @ 2008-08-13 12:02 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: Boris Shteinbock

On Wednesday 13 August 2008, Boris Shteinbock wrote:
> Help

Don't panic!

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
@ 2008-08-13  9:26 Boris Shteinbock
  2008-08-13 12:02 ` Help Arnd Bergmann
  0 siblings, 1 reply; 278+ messages in thread
From: Boris Shteinbock @ 2008-08-13  9:26 UTC (permalink / raw)
  To: linuxppc-dev

Help



      

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2008-08-13  8:22 help Artem Bityutskiy
@ 2008-08-13  8:29 ` Artem Bityutskiy
  0 siblings, 0 replies; 278+ messages in thread
From: Artem Bityutskiy @ 2008-08-13  8:29 UTC (permalink / raw)
  To: linux-fsdevel

Artem Bityutskiy wrote:
> help

Ops, apologies for noise.

-- 
Best Regards,
Artem Bityutskiy (Артём Битюцкий)
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2008-08-13  8:22 Artem Bityutskiy
  2008-08-13  8:29 ` help Artem Bityutskiy
  0 siblings, 1 reply; 278+ messages in thread
From: Artem Bityutskiy @ 2008-08-13  8:22 UTC (permalink / raw)
  To: linux-fsdevel

help

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2008-07-24  7:18 Help Sudeept Prusti
@ 2008-07-24 16:53 ` stan
  0 siblings, 0 replies; 278+ messages in thread
From: stan @ 2008-07-24 16:53 UTC (permalink / raw)
  To: Sudeept Prusti; +Cc: alsa-devel

Sudeept Prusti wrote:
> Hi all,
>  
> As i am working on ALSA for last few weeks.Can anyone guide where can i get
> moe informative things on ALSA internals (Internally how alsa works).
>  
Two possibilities:

First is the alsa web site, http://www.alsa-project.org 
  There are tutorials and api definitions.  I recall 
seeing an overview like you are asking for, as well as 
how to write a driver.  These are mostly out of date, 
though substantially correct.  For some reason I'm 
unable to reach it right now, so I can't give the links.

Second is the source.  You can download the alsa-lib 
and alsa-driver source archives.  That allows you to 
look at current implementations and see how things are 
done.

> Could anyone suggest what are validation scenario on alsa driver flow.
>  
> Thanks a lot.
>  
> Awaiting for response soon.
>  
> Regards,
> Sudeept
> 

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
@ 2008-07-24  7:18 Sudeept Prusti
  2008-07-24 16:53 ` Help stan
  0 siblings, 1 reply; 278+ messages in thread
From: Sudeept Prusti @ 2008-07-24  7:18 UTC (permalink / raw)
  To: alsa-devel

Hi all,
 
As i am working on ALSA for last few weeks.Can anyone guide where can i get
moe informative things on ALSA internals (Internally how alsa works).
 
Could anyone suggest what are validation scenario on alsa driver flow.
 
Thanks a lot.
 
Awaiting for response soon.
 
Regards,
Sudeept

The information contained in this electronic message and any attachments to this message are intended for the exclusive use of the addressee(s) and may contain proprietary, confidential or privileged information. If you are not the intended recipient, you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately and destroy all copies of this message and any attachments contained in it.

Contact your Administrator for further information.

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
       [not found] <20080220170012.C9E168E0292@hormel.redhat.com>
@ 2008-02-21  8:25 ` Lothar Brendel
  0 siblings, 0 replies; 278+ messages in thread
From: Lothar Brendel @ 2008-02-21  8:25 UTC (permalink / raw)
  To: video4linux-list

video4linux-list-request@redhat.com wrote:
>> Send video4linux-list mailing list submissions to
>> video4linux-list@redhat.com
>> 
>> To subscribe or unsubscribe via the World Wide Web, visit
>> https://www.redhat.com/mailman/listinfo/video4linux-list
>> or, via email, send a message with subject or body 'help' to
>> video4linux-list-request@redhat.com
>> 
>> You can reach the person managing the list at
>> video4linux-list-owner@redhat.com
>> 
>> When replying, please edit your Subject line so it is more specific
>> than "Re: Contents of video4linux-list digest..."
>> 
> 
> 
> 
>> Today's Topics:
>> 
>>   1. Re: [EXPERIMENTAL] cx88+xc3028 - tests are required - was:
>>      Re: When xc3028/xc2028 will be supported? (Daniel Gimpelevich)
>>   2. Re: [EXPERIMENTAL] cx88+xc3028 - tests are required - was:
>>      Re: When xc3028/xc2028 will be supported? (D?niel Fraga)
>>   3. Re: [EXPERIMENTAL] cx88+xc3028 - tests are required - was:
>>      Re: When xc3028/xc2028 will be supported? (Mauro Carvalho
>> Chehab) 
>>   4. Re: [EXPERIMENTAL] cx88+xc3028 - tests are required - was:
>>      Re: Wh en xc3028/xc2028 will be supported? (mkrufky@linuxtv.org)
>>   5. Re: [EXPERIMENTAL] cx88+xc3028 - tests are required - was:
>>      Re: When xc3028/xc2028 will be supported? (Mauro Carvalho
>> Chehab) 
>>   6. Re: [EXPERIMENTAL] cx88+xc3028 - tests are required - was:
>>      Re: Wh en xc3028/xc2028 will be supported? (Mauro Carvalho
>> Chehab) 
>>   7. Re: [linux-dvb] [patch] support for key repeat with dib0700
>>      ir receiver (hermann pitton)
>>   8. Re: [linux-dvb] auto detection of Flytv duo/hybrid and
>>      pci/cardbus confusion (hermann pitton)
>>   9. Re: [EXPERIMENTAL] cx88+xc3028 - tests are required - was:
>>      Re: When xc3028/xc2028 will be supported? (D?niel Fraga)
>>  10. Supported device? (Lyal Collins)
>>  11. Re: NULL pointer dereference while loading saa7133 on
>>      2.6.25-rc2 (mkrufky@linuxtv.org)
>> 
> 
> 
> 
>> --
>> video4linux-list mailing list
>> Unsubscribe
>> mailto:video4linux-list-request@redhat.com?subject=unsubscribe
>> https://www.redhat.com/mailman/listinfo/video4linux-list 

--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
       [not found] <mailman.230.1199775553.6908.linuxppc-dev@ozlabs.org>
@ 2008-01-08  7:04 ` 张自强
  0 siblings, 0 replies; 278+ messages in thread
From: 张自强 @ 2008-01-08  7:04 UTC (permalink / raw)
  To: linuxppc-dev

Help

-----=D3=CA=BC=FE=D4=AD=BC=FE-----
=B7=A2=BC=FE=C8=CB: =
linuxppc-dev-bounces+jackzhang=3Dsuperlink.com.cn@ozlabs.org
[mailto:linuxppc-dev-bounces+jackzhang=3Dsuperlink.com.cn@ozlabs.org] =
=B4=FA=B1=ED
linuxppc-dev-request@ozlabs.org
=B7=A2=CB=CD=CA=B1=BC=E4: 2008=C4=EA1=D4=C28=C8=D5 14:59
=CA=D5=BC=FE=C8=CB: linuxppc-dev@ozlabs.org
=D6=F7=CC=E2: Linuxppc-dev Digest, Vol 41, Issue 56

Send Linuxppc-dev mailing list submissions to
	linuxppc-dev@ozlabs.org

To subscribe or unsubscribe via the World Wide Web, visit
	https://ozlabs.org/mailman/listinfo/linuxppc-dev
or, via email, send a message with subject or body 'help' to
	linuxppc-dev-request@ozlabs.org

You can reach the person managing the list at
	linuxppc-dev-owner@ozlabs.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Linuxppc-dev digest..."


Today's Topics:

   1. Re: [PATCH] Fix remainder calculating bug in single floating
      point	division (Kumar Gala)
   2. Re: [PATCH] Fix carry bug in 128-bit unsigned integer adding
      (Kumar Gala)
   3. Re: [PATCH] Hwmon for Taco (Sean MacLennan)
   4. Re: [PATCH] i2c-ibm_iic driver - new patch (Stephen Rothwell)
   5. Re: [PATCH] Hwmon for Taco (Grant Likely)


----------------------------------------------------------------------

Message: 1
Date: Tue, 8 Jan 2008 00:22:25 -0600
From: Kumar Gala <galak@kernel.crashing.org>
Subject: Re: [PATCH] Fix remainder calculating bug in single floating
	point	division
To: Liu Yu <Yu.Liu@freescale.com>
Cc: linuxppc-dev@ozlabs.org
Message-ID: <CC561FA6-0590-4BC0-B42B-7EE1B379CE8E@kernel.crashing.org>
Content-Type: text/plain; charset=3DUS-ASCII; format=3Dflowed; =
delsp=3Dyes


On Jan 6, 2008, at 8:26 AM, Liu Yu wrote:

> This bug exists in the emulation of floating point division for =20
> powerpc.
>
> The original code cannot count the remainder correctly.
> I can provide a test case to trigger this bug.
> When use fdiv to count 1.1754941e-38f / 0.9999999f,
> the result is expected to be 1.175494e-38f,
> but we will get 1.174921e-38f in the original case.
>
> Comments are always welcomed!

can you provide the test case that shows the error.

- k



------------------------------

Message: 2
Date: Tue, 8 Jan 2008 00:27:59 -0600
From: Kumar Gala <galak@kernel.crashing.org>
Subject: Re: [PATCH] Fix carry bug in 128-bit unsigned integer adding
To: Liu Yu <Yu.Liu@freescale.com>
Cc: linuxppc-dev@ozlabs.org
Message-ID: <7040EDB2-7E89-4BBD-A4FC-50E168F9286F@kernel.crashing.org>
Content-Type: text/plain; charset=3DUS-ASCII; format=3Dflowed; =
delsp=3Dyes


On Jan 6, 2008, at 8:26 AM, Liu Yu wrote:

> This bug exists in math emulation for powerpc.
> The macro define are mainly used by multiplication.
>
> When adding two unsigned operands ( r =3D x + y ),
> the carry bit can be counted by whether r is less than x.
> However, when adding three unsigned operands, this method does not =20
> work.
>
> The original code below uses this method to count carry,
> it apparently overlook the case of three operands.
> Assume all the operands is 32-bit wide,
> ( r =3D x + y + last_carry , x =3D 0, y =3D 0xffffffff, last_carry =3D =
1),
> then r is no less than x but it actually gets a carry.
>
> I tried to fix this bug, but this patch seems not that pretty.
> Are there any better ideas?
> Comments are always welcomed!

take a look at how include/math-emu/op-4.h implements __FP_FRAC_ADD_4 =20
& __FP_FRAC_SUB_4.  Will that fix the bug, if so we should make the =20
code match how its done there.

- k



------------------------------

Message: 3
Date: Tue, 08 Jan 2008 01:30:00 -0500
From: Sean MacLennan <smaclennan@pikatech.com>
Subject: Re: [PATCH] Hwmon for Taco
To: benh@kernel.crashing.org
Cc: linuxppc-dev@ozlabs.org
Message-ID: <47831868.3030309@pikatech.com>
Content-Type: text/plain; charset=3DISO-8859-1; format=3Dflowed

Benjamin Herrenschmidt wrote:
> That should be in the device-tree...
>
> Cheers,
> Ben.
>
>  =20

Now in the device tree. The name of the file has changed.

Cheers,
    Sean

diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index a0445be..1f89186 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -57,6 +57,16 @@ config SENSORS_ABITUGURU3
       This driver can also be built as a module.  If so, the module
       will be called abituguru3.
=20
+config SENSORS_AD7414
+    tristate "Analog Devices AD7414"
+    depends on I2C && EXPERIMENTAL
+    help
+      If you say yes here you get support for the Analog Devices
+      AD7414 temperature monitoring chip.
+
+      This driver can also be built as a module. If so, the module
+      will be called ad7414.
+
 config SENSORS_AD7418
     tristate "Analog Devices AD7416, AD7417 and AD7418"
     depends on I2C && EXPERIMENTAL
@@ -763,4 +773,13 @@ config HWMON_DEBUG_CHIP
       a problem with I2C support and want to see more of what is going
       on.
=20
+config PIKA_DTM
+    tristate "PIKA DTM (Dynamic Thermal Management)"
+    depends on HWMON && WARP
+    select SENSORS_AD7414
+    default y
+    help
+      Say Y here if you have a PIKA Warp(tm) Appliance. This driver is
+      required for the DTM to work properly.
+
 endif # HWMON
diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
index 55595f6..0c6ee71 100644
--- a/drivers/hwmon/Makefile
+++ b/drivers/hwmon/Makefile
@@ -15,6 +15,7 @@ obj-$(CONFIG_SENSORS_W83791D)    +=3D w83791d.o
=20
 obj-$(CONFIG_SENSORS_ABITUGURU)    +=3D abituguru.o
 obj-$(CONFIG_SENSORS_ABITUGURU3)+=3D abituguru3.o
+obj-$(CONFIG_SENSORS_AD7414)    +=3D ad7414.o
 obj-$(CONFIG_SENSORS_AD7418)    +=3D ad7418.o
 obj-$(CONFIG_SENSORS_ADM1021)    +=3D adm1021.o
 obj-$(CONFIG_SENSORS_ADM1025)    +=3D adm1025.o
@@ -69,7 +70,8 @@ obj-$(CONFIG_SENSORS_VT8231)    +=3D vt8231.o
 obj-$(CONFIG_SENSORS_W83627EHF)    +=3D w83627ehf.o
 obj-$(CONFIG_SENSORS_W83L785TS)    +=3D w83l785ts.o
=20
+obj-$(CONFIG_PIKA_DTM)        +=3D pika-dtm.o
+
 ifeq ($(CONFIG_HWMON_DEBUG_CHIP),y)
 EXTRA_CFLAGS +=3D -DDEBUG
 endif
-
--- /dev/null    2005-11-20 22:22:37.000000000 -0500
+++ drivers/hwmon/pika-dtm.c    2008-01-08 01:23:32.000000000 -0500
@@ -0,0 +1,87 @@
+/*
+ *  drivers/hwmon/pika-dtm.c
+ *
+ *  Overview: On the Warp, the fpga controls the fan. This provides
+ *  the temperature to the fpga.
+ *
+ *  Copyright (c) 2008 PIKA Technologies
+ *    Sean MacLennan <smaclennan@pikatech.com>
+ *
+ *  This program is free software; you can redistribute     it and/or=20
modify it
+ *  under  the terms of     the GNU General  Public License as=20
published by the
+ *  Free Software Foundation;  either version 2 of the    License, or=20
(at your
+ *  option) any later version.
+ *
+ */
+
+#include <linux/module.h>
+#include <linux/kthread.h>
+#include <linux/io.h>
+#include <linux/of_platform.h>
+
+
+extern int ad7414_get_temp(void);
+
+static unsigned __iomem *dtm_fpga;
+static struct task_struct *dtm_thread;
+
+
+static int pika_dtm_thread(void *arg)
+{
+    while(!kthread_should_stop()) {
+        int temp =3D ad7414_get_temp();
+
+        // Write to FPGA
+        out_be32(dtm_fpga, temp);
+
+        set_current_state(TASK_INTERRUPTIBLE);
+        schedule_timeout(HZ);
+    }
+
+    return 0;
+}
+
+
+int __init pika_dtm_init(void)
+{
+    struct device_node *np;
+    struct resource res;
+
+    if((np =3D of_find_compatible_node(NULL, NULL, "pika,fpga")) =3D=3D =
NULL) {
+        printk(KERN_ERR __FILE__ ": Unable to find FPGA\n");
+        return -ENOENT;
+    }
+
+    /* We do not call of_iomap here since it would map in the entire
+     * fpga space, which is overkill for 4 bytes.
+     */
+    if(of_address_to_resource(np, 0, &res) ||
+       (dtm_fpga =3D ioremap(res.start + 0x20, 4)) =3D=3D NULL) {
+        printk(KERN_ERR __FILE__ ": Unable to map FPGA\n");
+        return -ENOENT;
+    }
+
+    dtm_thread =3D kthread_run(pika_dtm_thread, NULL, "pika-dtm");
+
+    if(IS_ERR(dtm_thread)) {
+        iounmap(dtm_fpga);
+        printk(KERN_ERR __FILE__ ": Unable to start PIKA DTM =
thread\n");
+        return PTR_ERR(dtm_thread);
+    }
+
+    return 0;
+}
+module_init(pika_dtm_init);
+
+
+void __exit pika_dtm_exit(void)
+{
+    kthread_stop(dtm_thread);
+    iounmap(dtm_fpga);
+}
+module_exit(pika_dtm_exit);
+
+
+MODULE_DESCRIPTION("PIKA DTM driver");
+MODULE_AUTHOR("Sean MacLennan");
+MODULE_LICENSE("GPL");
--- /dev/null    2005-11-20 22:22:37.000000000 -0500
+++ drivers/hwmon/ad7414.c    2008-01-05 20:36:06.000000000 -0500
@@ -0,0 +1,296 @@
+/*
+ * An hwmon driver for the Analog Devices AD7414
+ *
+ * Copyright 2006 Stefan Roese <sr@denx.de>, DENX Software Engineering
+ *
+ * Based on ad7418.c
+ * Copyright 2006 Tower Technologies, Alessandro Zummo=20
<a.zummo@towertech.it>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#include <linux/module.h>
+#include <linux/jiffies.h>
+#include <linux/i2c.h>
+#include <linux/hwmon.h>
+#include <linux/err.h>
+#include <linux/mutex.h>
+#include <linux/delay.h>
+
+
+#define DRV_VERSION "0.2"
+
+/* straight from the datasheet */
+#define AD7414_TEMP_MIN (-55000)
+#define AD7414_TEMP_MAX 125000
+
+/* Addresses to scan */
+static unsigned short normal_i2c[] =3D { 0x48, 0x4a, I2C_CLIENT_END };
+
+/* Insmod parameters */
+I2C_CLIENT_INSMOD;
+
+/* AD7414 registers */
+#define AD7414_REG_TEMP        0x00
+#define AD7414_REG_CONF        0x01
+#define AD7414_REG_T_HIGH    0x02
+#define AD7414_REG_T_LOW    0x03
+
+struct ad7414_data {
+    struct i2c_client    client;
+    struct device    *dev;
+    struct mutex        lock;
+    char            valid;        /* !=3D0 if following fields are =
valid */
+    unsigned long        last_updated;    /* In jiffies */
+    u16            temp_input;    /* Register values */
+    u8            temp_max;
+    u8            temp_min;
+    u8            temp_alert;
+    u8            temp_max_flag;
+    u8            temp_min_flag;
+};
+
+static int ad7414_attach_adapter(struct i2c_adapter *adapter);
+static int ad7414_detect(struct i2c_adapter *adapter, int address, int=20
kind);
+static int ad7414_detach_client(struct i2c_client *client);
+
+static struct i2c_driver ad7414_driver =3D {
+    .driver =3D {
+        .name    =3D "ad7414",
+    },
+    .attach_adapter    =3D ad7414_attach_adapter,
+    .detach_client    =3D ad7414_detach_client,
+};
+
+/*
+ * TEMP: 0.001C/bit (-55C to +125C)
+ * REG: (0.5C/bit, two's complement) << 7
+ */
+static inline int AD7414_TEMP_FROM_REG(u16 reg)
+{
+    /* use integer division instead of equivalent right shift to
+     * guarantee arithmetic shift and preserve the sign
+     */
+    return ((s16)reg / 128) * 500;
+}
+
+/* All registers are word-sized, except for the configuration =
registers.
+ * AD7414 uses a high-byte first convention, which is exactly opposite =
to
+ * the usual practice.
+ */
+static int ad7414_read(struct i2c_client *client, u8 reg)
+{
+    if (reg =3D=3D AD7414_REG_TEMP)
+        return swab16(i2c_smbus_read_word_data(client, reg));
+    else
+        return i2c_smbus_read_byte_data(client, reg);
+}
+
+static int ad7414_write(struct i2c_client *client, u8 reg, u16 value)
+{
+    return i2c_smbus_write_byte_data(client, reg, value);
+}
+
+/* PIKA Taco - we need to access the temperature in kernel mode. As a
+ * hack we store the device here. This works because we only have one
+ * ad7414 chip.
+ */
+static struct device *ad7414_dev;
+
+static void ad7414_init_client(struct i2c_client *client)
+{
+    /* TODO: anything to do here??? */
+    ad7414_dev =3D &client->dev;
+}
+
+static struct ad7414_data *ad7414_update_device(struct device *dev)
+{
+    struct i2c_client *client =3D to_i2c_client(dev);
+    struct ad7414_data *data =3D i2c_get_clientdata(client);
+
+    mutex_lock(&data->lock);
+
+    if (time_after(jiffies, data->last_updated + HZ + HZ / 2)
+        || !data->valid) {
+        dev_dbg(&client->dev, "starting ad7414 update\n");
+
+        data->temp_input =3D ad7414_read(client, AD7414_REG_TEMP);
+        data->temp_alert =3D (data->temp_input >> 5) & 0x01;
+        data->temp_max_flag =3D (data->temp_input >> 4) & 0x01;
+        data->temp_min_flag =3D (data->temp_input >> 3) & 0x01;
+        data->temp_max =3D ad7414_read(client, AD7414_REG_T_HIGH);
+        data->temp_min =3D ad7414_read(client, AD7414_REG_T_LOW);
+
+        data->last_updated =3D jiffies;
+        data->valid =3D 1;
+    }
+
+    mutex_unlock(&data->lock);
+
+    return data;
+}
+
+int ad7414_get_temp(void)
+{
+    if(ad7414_dev) {
+        struct ad7414_data *data =3D ad7414_update_device(ad7414_dev);
+        return data->temp_input;
+    } else
+        return 0x1f4; // +125
+}
+EXPORT_SYMBOL(ad7414_get_temp);
+
+#define show(value) \
+static ssize_t show_##value(struct device *dev, struct device_attribute =

*attr, char *buf)        \
+{                                    \
+    struct ad7414_data *data =3D ad7414_update_device(dev);        \
+    return sprintf(buf, "%d\n", AD7414_TEMP_FROM_REG(data->value));    =
\
+}
+show(temp_input);
+
+#define show_8(value)    \
+static ssize_t show_##value(struct device *dev, struct device_attribute =

*attr, char *buf)        \
+{                                \
+    struct ad7414_data *data =3D ad7414_update_device(dev);    \
+    return sprintf(buf, "%d\n", data->value);        \
+}
+show_8(temp_max);
+show_8(temp_min);
+show_8(temp_alert);
+show_8(temp_max_flag);
+show_8(temp_min_flag);
+
+#define set(value, reg)    \
+static ssize_t set_##value(struct device *dev, struct device_attribute=20
*attr, const char *buf, size_t count)    \
+{                                \
+    struct i2c_client *client =3D to_i2c_client(dev);        \
+    struct ad7414_data *data =3D i2c_get_clientdata(client);    \
+    int temp =3D simple_strtoul(buf, NULL, 10);        \
+                                \
+    mutex_lock(&data->lock);                \
+    data->value =3D temp;                    \
+    ad7414_write(client, reg, data->value);            \
+    mutex_unlock(&data->lock);                \
+    return count;                        \
+}
+set(temp_max, AD7414_REG_T_HIGH);
+set(temp_min, AD7414_REG_T_LOW);
+
+static DEVICE_ATTR(temp1_max, S_IWUSR | S_IRUGO, show_temp_max,=20
set_temp_max);
+static DEVICE_ATTR(temp1_min, S_IWUSR | S_IRUGO, show_temp_min,=20
set_temp_min);
+static DEVICE_ATTR(temp1_input, S_IRUGO, show_temp_input, NULL);
+static DEVICE_ATTR(temp1_alert, S_IRUGO, show_temp_alert, NULL);
+static DEVICE_ATTR(temp1_max_flag, S_IRUGO, show_temp_max_flag, NULL);
+static DEVICE_ATTR(temp1_min_flag, S_IRUGO, show_temp_min_flag, NULL);
+
+static int ad7414_attach_adapter(struct i2c_adapter *adapter)
+{
+    if (!(adapter->class & I2C_CLASS_HWMON))
+        return 0;
+    return i2c_probe(adapter, &addr_data, ad7414_detect);
+}
+
+static struct attribute *ad7414_attributes[] =3D {
+    &dev_attr_temp1_input.attr,
+    &dev_attr_temp1_max.attr,
+    &dev_attr_temp1_min.attr,
+    &dev_attr_temp1_alert.attr,
+    &dev_attr_temp1_max_flag.attr,
+    &dev_attr_temp1_min_flag.attr,
+    NULL
+};
+
+static const struct attribute_group ad7414_group =3D {
+    .attrs =3D ad7414_attributes,
+};
+
+static int ad7414_detect(struct i2c_adapter *adapter, int address, int=20
kind)
+{
+    struct i2c_client *client;
+    struct ad7414_data *data;
+    int err =3D 0;
+
+    if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA |
+                    I2C_FUNC_SMBUS_WORD_DATA))
+        goto exit;
+
+    if (!(data =3D kzalloc(sizeof(struct ad7414_data), GFP_KERNEL))) {
+        err =3D -ENOMEM;
+        goto exit;
+    }
+
+    client =3D &data->client;
+    client->addr =3D address;
+    client->adapter =3D adapter;
+    client->driver =3D &ad7414_driver;
+    client->flags =3D 0;
+
+    i2c_set_clientdata(client, data);
+
+    mutex_init(&data->lock);
+
+    /* TODO: not testing for AD7414 done yet... */
+
+    strlcpy(client->name, ad7414_driver.driver.name, I2C_NAME_SIZE);
+
+    if ((err =3D i2c_attach_client(client)))
+        goto exit_free;
+
+    dev_info(&client->dev, "chip found, driver version " DRV_VERSION =
"\n");
+
+    /* Initialize the AD7414 chip */
+    ad7414_init_client(client);
+
+    /* Register sysfs hooks */
+    if ((err =3D sysfs_create_group(&client->dev.kobj, &ad7414_group)))
+        goto exit_detach;
+
+    data->dev =3D hwmon_device_register(&client->dev);
+    if (IS_ERR(data->dev)) {
+        err =3D PTR_ERR(data->dev);
+        goto exit_remove;
+    }
+
+    return 0;
+
+exit_remove:
+    sysfs_remove_group(&client->dev.kobj, &ad7414_group);
+exit_detach:
+    i2c_detach_client(client);
+exit_free:
+    kfree(data);
+exit:
+    return err;
+}
+
+static int ad7414_detach_client(struct i2c_client *client)
+{
+    struct ad7414_data *data =3D i2c_get_clientdata(client);
+    ad7414_dev =3D NULL;
+    hwmon_device_unregister(data->dev);
+    sysfs_remove_group(&client->dev.kobj, &ad7414_group);
+    i2c_detach_client(client);
+    kfree(data);
+    return 0;
+}
+
+static int __init ad7414_init(void)
+{
+    return i2c_add_driver(&ad7414_driver);
+}
+
+static void __exit ad7414_exit(void)
+{
+    i2c_del_driver(&ad7414_driver);
+}
+
+MODULE_AUTHOR("Stefan Roese <sr@denx.de>");
+MODULE_DESCRIPTION("AD7414 driver");
+MODULE_LICENSE("GPL");
+MODULE_VERSION(DRV_VERSION);
+
+module_init(ad7414_init);
+module_exit(ad7414_exit);




------------------------------

Message: 4
Date: Tue, 8 Jan 2008 17:36:36 +1100
From: Stephen Rothwell <sfr@canb.auug.org.au>
Subject: Re: [PATCH] i2c-ibm_iic driver - new patch
To: Sean MacLennan <smaclennan@pikatech.com>
Cc: linuxppc-dev@ozlabs.org, Stefan Roese <sr@denx.de>,	Arnd Bergmann
	<arnd@arndb.de>
Message-ID: <20080108173636.73db1623.sfr@canb.auug.org.au>
Content-Type: text/plain; charset=3D"us-ascii"

On Tue, 08 Jan 2008 00:56:27 -0500 Sean MacLennan =
<smaclennan@pikatech.com>
wrote:
>
> Stephen Rothwell wrote:
> >
> > On Mon, 07 Jan 2008 21:03:12 -0500 Sean MacLennan
<smaclennan@pikatech.com> wrote:
> >  =20
> > Please don't post patches as attachments.
> =20
> Ok.

Unfortunately, you are using thunderbird and so the patch is now =
wrapped.
There is a workaround, see Documentation/email-clients.txt.

> > Please split the assignments from the tests.  Here and elsewhere.
> >  =20
> I made the changes in my code. I am trying to leave the original code =
as=20
> much as possible.

Thats all we ask.

> >> +	} else {
> >> +		if (dev->irq !=3D NO_IRQ){
> >> +		    iic_interrupt_mode(dev, 0);
> >> +		    free_irq(dev->irq, dev);
> >> +		}
> >> +		iounmap(dev->vaddr);
> >> +		kfree(dev);
> >>    =20
> >
> > Should these last two be after the below brace?
> >
> >  =20
> I'm not really qualified to answer, but I will anyway ;) I assume the=20
> original author is basically saying if he cannot delete the adapter, =
it=20
> is unsafe to free the memory since the i2c code may still use it. If I =

> have read that right, then I agree.

OK, I can see that this is a "that should not happen" condition.

> +    if (iic_force_poll)
> +        dev->irq =3D NO_IRQ;
> +    else if ((dev->irq =3D irq_of_parse_and_map(np, 0)) =3D=3D =
NO_IRQ)

You missed this one.

Overall looks better, except all your indentation is now 4 spaces. We =
use
a TAB character for each level of indentation and you should be able to
set your editor to *display* the TABs as 4 places if that is what you =
like.

--=20
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url :
http://ozlabs.org/pipermail/linuxppc-dev/attachments/20080108/3c5fd612/at=
tac
hment-0001.pgp=20

------------------------------

Message: 5
Date: Mon, 7 Jan 2008 23:59:09 -0700
From: "Grant Likely" <grant.likely@secretlab.ca>
Subject: Re: [PATCH] Hwmon for Taco
To: "Sean MacLennan" <smaclennan@pikatech.com>
Cc: linuxppc-dev@ozlabs.org
Message-ID:
	<fa686aa40801072259w63899e74y45d55bd5e9844b68@mail.gmail.com>
Content-Type: text/plain; charset=3DISO-8859-1

On 1/7/08, Sean MacLennan <smaclennan@pikatech.com> wrote:
> diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
> index a0445be..1f89186 100644
> --- a/drivers/hwmon/Kconfig
> +++ b/drivers/hwmon/Kconfig
> @@ -57,6 +57,16 @@ config SENSORS_ABITUGURU3
>        This driver can also be built as a module.  If so, the module
>        will be called abituguru3.
>
> +config SENSORS_AD7414
> +    tristate "Analog Devices AD7414"
> +    depends on I2C && EXPERIMENTAL
> +    help
> +      If you say yes here you get support for the Analog Devices
> +      AD7414 temperature monitoring chip.
> +
> +      This driver can also be built as a module. If so, the module
> +      will be called ad7414.
> +
>  config SENSORS_AD7418
>      tristate "Analog Devices AD7416, AD7417 and AD7418"
>      depends on I2C && EXPERIMENTAL
> @@ -763,4 +773,13 @@ config HWMON_DEBUG_CHIP
>        a problem with I2C support and want to see more of what is =
going
>        on.
>
> +config PIKA_DTM
> +    tristate "PIKA DTM (Dynamic Thermal Management)"
> +    depends on HWMON && WARP
> +    select SENSORS_AD7414

select is dangerous because it bypasses dependency checking.  Make it
'depends on' instead.

> +    default y
> +    help
> +      Say Y here if you have a PIKA Warp(tm) Appliance. This driver =
is
> +      required for the DTM to work properly.
> +

This patch should be split in 2; one for the AD7414 driver and one for
the thermal management driver.

>  endif # HWMON
> diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
> index 55595f6..0c6ee71 100644
> --- a/drivers/hwmon/Makefile
> +++ b/drivers/hwmon/Makefile
> @@ -15,6 +15,7 @@ obj-$(CONFIG_SENSORS_W83791D)    +=3D w83791d.o
>
>  obj-$(CONFIG_SENSORS_ABITUGURU)    +=3D abituguru.o
>  obj-$(CONFIG_SENSORS_ABITUGURU3)+=3D abituguru3.o
> +obj-$(CONFIG_SENSORS_AD7414)    +=3D ad7414.o
>  obj-$(CONFIG_SENSORS_AD7418)    +=3D ad7418.o
>  obj-$(CONFIG_SENSORS_ADM1021)    +=3D adm1021.o
>  obj-$(CONFIG_SENSORS_ADM1025)    +=3D adm1025.o
> @@ -69,7 +70,8 @@ obj-$(CONFIG_SENSORS_VT8231)    +=3D vt8231.o
>  obj-$(CONFIG_SENSORS_W83627EHF)    +=3D w83627ehf.o
>  obj-$(CONFIG_SENSORS_W83L785TS)    +=3D w83l785ts.o
>
> +obj-$(CONFIG_PIKA_DTM)        +=3D pika-dtm.o
> +
>  ifeq ($(CONFIG_HWMON_DEBUG_CHIP),y)
>  EXTRA_CFLAGS +=3D -DDEBUG
>  endif
> -
> --- /dev/null    2005-11-20 22:22:37.000000000 -0500
> +++ drivers/hwmon/pika-dtm.c    2008-01-08 01:23:32.000000000 -0500

This is *very* board specific and not very complex a driver.  It
should probably live with the platform code somewhere in
arch/powerpc/platforms.  You can use the machine_device_initcall()
hook to kick off the thread.

> @@ -0,0 +1,87 @@
> +/*
> + *  drivers/hwmon/pika-dtm.c
> + *
> + *  Overview: On the Warp, the fpga controls the fan. This provides
> + *  the temperature to the fpga.
> + *
> + *  Copyright (c) 2008 PIKA Technologies
> + *    Sean MacLennan <smaclennan@pikatech.com>
> + *
> + *  This program is free software; you can redistribute     it and/or
> modify it
> + *  under  the terms of     the GNU General  Public License as
> published by the
> + *  Free Software Foundation;  either version 2 of the    License, or
> (at your
> + *  option) any later version.

Your mailer chewed up the patch here (line wrap).

> + *
> + */
> +
> +#include <linux/module.h>
> +#include <linux/kthread.h>
> +#include <linux/io.h>
> +#include <linux/of_platform.h>
> +
> +
> +extern int ad7414_get_temp(void);

Bad!  Function decls must be in common header files.

> +
> +static unsigned __iomem *dtm_fpga;
> +static struct task_struct *dtm_thread;
> +
> +
> +static int pika_dtm_thread(void *arg)
> +{
> +    while(!kthread_should_stop()) {
> +        int temp =3D ad7414_get_temp();
> +
> +        // Write to FPGA

Style; use /* */, not //

> +        out_be32(dtm_fpga, temp);
> +
> +        set_current_state(TASK_INTERRUPTIBLE);
> +        schedule_timeout(HZ);
> +    }
> +
> +    return 0;
> +}
> +
> +
> +int __init pika_dtm_init(void)
> +{
> +    struct device_node *np;
> +    struct resource res;
> +
> +    if((np =3D of_find_compatible_node(NULL, NULL, "pika,fpga")) =
=3D=3D NULL) {
> +        printk(KERN_ERR __FILE__ ": Unable to find FPGA\n");
> +        return -ENOENT;
> +    }
> +
> +    /* We do not call of_iomap here since it would map in the entire
> +     * fpga space, which is overkill for 4 bytes.
> +     */

iomapping is not expensive; just map the whole space (it's going to
map a minimum 4k page anyway).  The code will be easier to read if you
just use of_iomap().

> +    if(of_address_to_resource(np, 0, &res) ||
> +       (dtm_fpga =3D ioremap(res.start + 0x20, 4)) =3D=3D NULL) {
> +        printk(KERN_ERR __FILE__ ": Unable to map FPGA\n");
> +        return -ENOENT;
> +    }
> +
> +    dtm_thread =3D kthread_run(pika_dtm_thread, NULL, "pika-dtm");
> +
> +    if(IS_ERR(dtm_thread)) {
> +        iounmap(dtm_fpga);
> +        printk(KERN_ERR __FILE__ ": Unable to start PIKA DTM =
thread\n");
> +        return PTR_ERR(dtm_thread);
> +    }
> +
> +    return 0;
> +}
> +module_init(pika_dtm_init);
> +
> +
> +void __exit pika_dtm_exit(void)
> +{
> +    kthread_stop(dtm_thread);
> +    iounmap(dtm_fpga);
> +}
> +module_exit(pika_dtm_exit);
> +
> +
> +MODULE_DESCRIPTION("PIKA DTM driver");
> +MODULE_AUTHOR("Sean MacLennan");
> +MODULE_LICENSE("GPL");
> --- /dev/null    2005-11-20 22:22:37.000000000 -0500
> +++ drivers/hwmon/ad7414.c    2008-01-05 20:36:06.000000000 -0500
> @@ -0,0 +1,296 @@
> +/*
> + * An hwmon driver for the Analog Devices AD7414
> + *
> + * Copyright 2006 Stefan Roese <sr@denx.de>, DENX Software =
Engineering
> + *
> + * Based on ad7418.c
> + * Copyright 2006 Tower Technologies, Alessandro Zummo
> <a.zummo@towertech.it>
> + *
> + * This program is free software; you can redistribute it and/or =
modify
> + * it under the terms of the GNU General Public License as published =
by
> + * the Free Software Foundation; either version 2 of the License, or
> + * (at your option) any later version.
> + */
> +
> +#include <linux/module.h>
> +#include <linux/jiffies.h>
> +#include <linux/i2c.h>
> +#include <linux/hwmon.h>
> +#include <linux/err.h>
> +#include <linux/mutex.h>
> +#include <linux/delay.h>
> +
> +
> +#define DRV_VERSION "0.2"
> +
> +/* straight from the datasheet */
> +#define AD7414_TEMP_MIN (-55000)
> +#define AD7414_TEMP_MAX 125000
> +
> +/* Addresses to scan */
> +static unsigned short normal_i2c[] =3D { 0x48, 0x4a, I2C_CLIENT_END =
};
> +
> +/* Insmod parameters */
> +I2C_CLIENT_INSMOD;
> +
> +/* AD7414 registers */
> +#define AD7414_REG_TEMP        0x00
> +#define AD7414_REG_CONF        0x01
> +#define AD7414_REG_T_HIGH    0x02
> +#define AD7414_REG_T_LOW    0x03
> +
> +struct ad7414_data {
> +    struct i2c_client    client;
> +    struct device    *dev;
> +    struct mutex        lock;
> +    char            valid;        /* !=3D0 if following fields are =
valid */
> +    unsigned long        last_updated;    /* In jiffies */
> +    u16            temp_input;    /* Register values */
> +    u8            temp_max;
> +    u8            temp_min;
> +    u8            temp_alert;
> +    u8            temp_max_flag;
> +    u8            temp_min_flag;
> +};
> +
> +static int ad7414_attach_adapter(struct i2c_adapter *adapter);
> +static int ad7414_detect(struct i2c_adapter *adapter, int address, =
int
> kind);
> +static int ad7414_detach_client(struct i2c_client *client);
> +
> +static struct i2c_driver ad7414_driver =3D {
> +    .driver =3D {
> +        .name    =3D "ad7414",
> +    },
> +    .attach_adapter    =3D ad7414_attach_adapter,
> +    .detach_client    =3D ad7414_detach_client,
> +};
> +
> +/*
> + * TEMP: 0.001C/bit (-55C to +125C)
> + * REG: (0.5C/bit, two's complement) << 7
> + */
> +static inline int AD7414_TEMP_FROM_REG(u16 reg)
> +{
> +    /* use integer division instead of equivalent right shift to
> +     * guarantee arithmetic shift and preserve the sign
> +     */
> +    return ((s16)reg / 128) * 500;
> +}
> +
> +/* All registers are word-sized, except for the configuration =
registers.
> + * AD7414 uses a high-byte first convention, which is exactly =
opposite to
> + * the usual practice.
> + */
> +static int ad7414_read(struct i2c_client *client, u8 reg)
> +{
> +    if (reg =3D=3D AD7414_REG_TEMP)
> +        return swab16(i2c_smbus_read_word_data(client, reg));
> +    else
> +        return i2c_smbus_read_byte_data(client, reg);
> +}
> +
> +static int ad7414_write(struct i2c_client *client, u8 reg, u16 value)
> +{
> +    return i2c_smbus_write_byte_data(client, reg, value);
> +}
> +
> +/* PIKA Taco - we need to access the temperature in kernel mode. As a
> + * hack we store the device here. This works because we only have one
> + * ad7414 chip.
> + */
> +static struct device *ad7414_dev;

Can you use a list_head instead?  That would allow multiple instances.

This driver shouldn't contain board specific code.

> +
> +static void ad7414_init_client(struct i2c_client *client)
> +{
> +    /* TODO: anything to do here??? */
> +    ad7414_dev =3D &client->dev;

ick.

> +}
> +
> +static struct ad7414_data *ad7414_update_device(struct device *dev)
> +{
> +    struct i2c_client *client =3D to_i2c_client(dev);
> +    struct ad7414_data *data =3D i2c_get_clientdata(client);
> +
> +    mutex_lock(&data->lock);
> +
> +    if (time_after(jiffies, data->last_updated + HZ + HZ / 2)
> +        || !data->valid) {
> +        dev_dbg(&client->dev, "starting ad7414 update\n");
> +
> +        data->temp_input =3D ad7414_read(client, AD7414_REG_TEMP);
> +        data->temp_alert =3D (data->temp_input >> 5) & 0x01;
> +        data->temp_max_flag =3D (data->temp_input >> 4) & 0x01;
> +        data->temp_min_flag =3D (data->temp_input >> 3) & 0x01;
> +        data->temp_max =3D ad7414_read(client, AD7414_REG_T_HIGH);
> +        data->temp_min =3D ad7414_read(client, AD7414_REG_T_LOW);
> +
> +        data->last_updated =3D jiffies;
> +        data->valid =3D 1;
> +    }
> +
> +    mutex_unlock(&data->lock);
> +
> +    return data;
> +}
> +
> +int ad7414_get_temp(void)

maybe ad7414_get_temp(int index)?  Would allow for multiple instances.

> +{
> +    if(ad7414_dev) {
> +        struct ad7414_data *data =3D =
ad7414_update_device(ad7414_dev);
> +        return data->temp_input;
> +    } else
> +        return 0x1f4; // +125

Style; c++ comment

Cheers,
g.

--=20
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.


------------------------------

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

End of Linuxppc-dev Digest, Vol 41, Issue 56
********************************************

^ permalink raw reply related	[flat|nested] 278+ messages in thread

* Help
@ 2007-12-26  1:15 xiaodan
  0 siblings, 0 replies; 278+ messages in thread
From: xiaodan @ 2007-12-26  1:15 UTC (permalink / raw)
  To: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW


[-- Attachment #1.1: Type: text/plain, Size: 196 bytes --]


Is there anyone working on the ATI Opensurce driver - RV 630 ?
_________________________________________________________________
MSN 中文网,最新时尚生活资讯,白领聚集门户。
http://cn.msn.com

[-- Attachment #1.2: Type: text/html, Size: 380 bytes --]

[-- Attachment #2: Type: text/plain, Size: 181 bytes --]

_______________________________________________
Nouveau mailing list
Nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2007-12-10 11:48 help Thanos Chatziathanassiou
@ 2007-12-11  1:02 ` David Newall
  0 siblings, 0 replies; 278+ messages in thread
From: David Newall @ 2007-12-11  1:02 UTC (permalink / raw)
  To: Thanos Chatziathanassiou; +Cc: linux-kernel

Thanos Chatziathanassiou wrote:
> help

I KNOW OF PLACES, ACTIONS, AND THINGS. MOST OF MY VOCABULARY
DESCRIBES PLACES AND IS USED TO MOVE YOU THERE. TO MOVE TRY
WORDS LIKE FOREST, BUILDING, DOWNSTREAM, ENTER, EAST, WEST
NORTH, SOUTH, UP, OR DOWN.  I KNOW ABOUT A FEW SPECIAL OBJECTS,
LIKE A BLACK ROD HIDDEN IN THE CAVE. THESE OBJECTS CAN BE
MANIPULATED USING ONE OF THE ACTION WORDS THAT I KNOW. USUALLY
YOU WILL NEED TO GIVE BOTH THE OBJECT AND ACTION WORDS
(IN EITHER ORDER), BUT SOMETIMES I CAN INFER THE OBJECT FROM
THE VERB ALONE. THE OBJECTS HAVE SIDE EFFECTS - FOR
INSTANCE, THE ROD SCARES THE BIRD.
USUALLY PEOPLE HAVING TROUBLE MOVING JUST NEED TO TRY A FEW
MORE WORDS. USUALLY PEOPLE TRYING TO MANIPULATE AN
OBJECT ARE ATTEMPTING SOMETHING BEYOND THEIR (OR MY!)
CAPABILITIES AND SHOULD TRY A COMPLETELY DIFFERENT TACK.
TO SPEED THE GAME YOU CAN SOMETIMES MOVE LONG DISTANCES
WITH A SINGLE WORD. FOR EXAMPLE, 'BUILDING' USUALLY GETS
YOU TO THE BUILDING FROM ANYWHERE ABOVE GROUND EXCEPT WHEN
LOST IN THE FOREST. ALSO, NOTE THAT CAVE PASSAGES TURN A
LOT, AND THAT LEAVING A ROOM TO THE NORTH DOES NOT GUARANTEE
ENTERING THE NEXT FROM THE SOUTH. GOOD LUCK!

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2007-12-10 11:48 Thanos Chatziathanassiou
  2007-12-11  1:02 ` help David Newall
  0 siblings, 1 reply; 278+ messages in thread
From: Thanos Chatziathanassiou @ 2007-12-10 11:48 UTC (permalink / raw)
  To: linux-kernel

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

help

[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/x-pkcs7-signature, Size: 3229 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2007-12-02  4:24 help YanBob
@ 2007-12-02 17:09 ` Tobin Davis
  0 siblings, 0 replies; 278+ messages in thread
From: Tobin Davis @ 2007-12-02 17:09 UTC (permalink / raw)
  To: YanBob; +Cc: alsa-devel

I looked at the most recent als adriver code, and am not seeing any
Lenovo systems listed for the ALC262 at this time.  Could you run
http://bulletproof.servebeer.com/alsa/scripts/alsa-info.sh and post the
link it generates?  This will give us more useful information about your
system.

Thanks,

Tobin

On Sun, 2007-12-02 at 12:24 +0800, YanBob wrote:

> hello, my  linux is ubuntu with Linux bob-laptop 2.6.22-14-generic #1
> SMP Sun Oct 14 23:05:12 GMT 2007 i686 GNU/Linux.
>         now the problem is that,no sound comes out when i use ubuntu.
>         i have google some pages, and followed the steps as they said. But i
> turns out that my sound card is still not working. At the end of this
> email,
> i send you  some inf. about my sound card. And my laptop model is Lenovo
> F41.
>  Could you please help me?   thanks a million!!
> 
> bob@bob-laptop:~$ aplay -l
> **** PLAYBACK硬件设备列表 ****
> 卡 0: Intel [HDA Intel], 设备 0: ALC262 Analog [ALC262 Analog]
>   子设备: 1/1
>   子设备:#0: subdevice #0
> 卡 0: Intel [HDA Intel], 设备 1: ALC262 Digital [ALC262 Digital]
>   子设备: 1/1
>   子设备:#0: subdevice #0
> 卡 0: Intel [HDA Intel], 设备 6: Si3054 Modem [Si3054 Modem]
>   子设备: 1/1
>   子设备:#0: subdevice #0
> 
> bob@bob-laptop:~$ lspci -vv|grep Audio
> 00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio
> Controller (rev 03)
> 
> bob@bob-laptop:~$ cat /proc/asound/cards 
>  0 [Intel          ]: HDA-Intel - HDA Intel
>                       HDA Intel at 0xf8300000 irq 22
> 
> bob@bob-laptop:~$ lsmod|grep snd
> snd_hda_intel         263712  1 
> snd_pcm_oss            44672  0 
> snd_mixer_oss          17664  1 snd_pcm_oss
> snd_pcm                80388  2 snd_hda_intel,snd_pcm_oss
> snd_seq_dummy           4740  0 
> snd_seq_oss            33152  0 
> snd_seq_midi            9600  0 
> snd_rawmidi            25728  1 snd_seq_midi
> snd_seq_midi_event      8448  2 snd_seq_oss,snd_seq_midi
> snd_seq                53232  6
> snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq_midi_event
> snd_timer              24324  2 snd_pcm,snd_seq
> snd_seq_device          9228  5
> snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_rawmidi,snd_seq
> snd                    54660  11
> snd_hda_intel,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_seq_oss,snd_rawmidi,snd_seq,snd_timer,snd_seq_device
> soundcore               8800  1 snd
> snd_page_alloc         11400  2 snd_hda_intel,snd_pcm
> 
> 
> bob@bob-laptop:~$ cat /proc/asound/version 
> Advanced Linux Sound Architecture Driver Version 1.0.14 (Thu May 31
> 09:03:25 2007 UTC).
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>       ___________________________________________________________ 
> 进入雅虎游戏嘉年华,赢取液晶显示器! 
> http://cn.mail.yahoo.com/promo/carnival07/
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

-- 
Tobin Davis  


Literature is mostly about having sex and not much about having children.
Life is the other way around.
		-- David Lodge, "The British Museum is Falling Down"
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2007-12-02  4:24 YanBob
  2007-12-02 17:09 ` help Tobin Davis
  0 siblings, 1 reply; 278+ messages in thread
From: YanBob @ 2007-12-02  4:24 UTC (permalink / raw)
  To: alsa-devel

hello, my  linux is ubuntu with Linux bob-laptop 2.6.22-14-generic #1
SMP Sun Oct 14 23:05:12 GMT 2007 i686 GNU/Linux.
        now the problem is that,no sound comes out when i use ubuntu.
        i have google some pages, and followed the steps as they said. But i
turns out that my sound card is still not working. At the end of this
email,
i send you  some inf. about my sound card. And my laptop model is Lenovo
F41.
 Could you please help me?   thanks a million!!

bob@bob-laptop:~$ aplay -l
**** PLAYBACK硬件设备列表 ****
卡 0: Intel [HDA Intel], 设备 0: ALC262 Analog [ALC262 Analog]
  子设备: 1/1
  子设备:#0: subdevice #0
卡 0: Intel [HDA Intel], 设备 1: ALC262 Digital [ALC262 Digital]
  子设备: 1/1
  子设备:#0: subdevice #0
卡 0: Intel [HDA Intel], 设备 6: Si3054 Modem [Si3054 Modem]
  子设备: 1/1
  子设备:#0: subdevice #0

bob@bob-laptop:~$ lspci -vv|grep Audio
00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio
Controller (rev 03)

bob@bob-laptop:~$ cat /proc/asound/cards 
 0 [Intel          ]: HDA-Intel - HDA Intel
                      HDA Intel at 0xf8300000 irq 22

bob@bob-laptop:~$ lsmod|grep snd
snd_hda_intel         263712  1 
snd_pcm_oss            44672  0 
snd_mixer_oss          17664  1 snd_pcm_oss
snd_pcm                80388  2 snd_hda_intel,snd_pcm_oss
snd_seq_dummy           4740  0 
snd_seq_oss            33152  0 
snd_seq_midi            9600  0 
snd_rawmidi            25728  1 snd_seq_midi
snd_seq_midi_event      8448  2 snd_seq_oss,snd_seq_midi
snd_seq                53232  6
snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq_midi_event
snd_timer              24324  2 snd_pcm,snd_seq
snd_seq_device          9228  5
snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_rawmidi,snd_seq
snd                    54660  11
snd_hda_intel,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_seq_oss,snd_rawmidi,snd_seq,snd_timer,snd_seq_device
soundcore               8800  1 snd
snd_page_alloc         11400  2 snd_hda_intel,snd_pcm


bob@bob-laptop:~$ cat /proc/asound/version 
Advanced Linux Sound Architecture Driver Version 1.0.14 (Thu May 31
09:03:25 2007 UTC).
























































      ___________________________________________________________ 
进入雅虎游戏嘉年华,赢取液晶显示器! 
http://cn.mail.yahoo.com/promo/carnival07/
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2007-11-26 14:53 liujiusheng
  0 siblings, 0 replies; 278+ messages in thread
From: liujiusheng @ 2007-11-26 14:53 UTC (permalink / raw)
  To: kernel-janitors


help

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2007-11-18 18:48 help mattias
@ 2007-11-18 19:06 ` Morten K. Poulsen
  0 siblings, 0 replies; 278+ messages in thread
From: Morten K. Poulsen @ 2007-11-18 19:06 UTC (permalink / raw)
  To: mlmmj

mattias wrote:
> I try to use mlmmj-php-web-admin
[...]
> Warning: fopen(../conf/tunables.pl) [
> function.fopen]:
> failed to open stream: No such file or directory in
> /var/www/mlmmj-php-web-admin/edit.php on line 117
[...]
> What are wrong?

Obviously the file tunables.pl is missing. You only copied the htdocs 
directory into your webroot, and left out (at least) the conf directory.

Please read the README for the web interface. It explains the 
installation procedure.

Morten

-- 
Morten K. Poulsen <morten@afdelingp.dk>
http://www.afdelingp.dk/

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2007-11-18 18:48 mattias
  2007-11-18 19:06 ` help Morten K. Poulsen
  0 siblings, 1 reply; 278+ messages in thread
From: mattias @ 2007-11-18 18:48 UTC (permalink / raw)
  To: mlmmj

I try to use mlmmj-php-web-admin
But php says
mlmmj config

Warning: fopen(../conf/tunables.pl) [
function.fopen]:
failed to open stream: No such file or directory in
/var/www/mlmmj-php-web-admin/edit.php on line 117

Warning: filesize() [
function.filesize]:
Stat failed for ../conf/tunables.pl (errno=2 - No such file or directory) in
/var/www/mlmmj-php-web-admin/edit.php on line 118

Warning: fread(): supplied argument is not a valid stream resource in
/var/www/mlmmj-php-web-admin/edit.php on line 118

Warning: fclose(): supplied argument is not a valid stream resource in
/var/www/mlmmj-php-web-admin/edit.php on line 119

mlmmj config

{ROWS}

What are wrong?



^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2007-08-27 17:18 ` help David Newall
@ 2007-08-27 17:31   ` Michal Piotrowski
  0 siblings, 0 replies; 278+ messages in thread
From: Michal Piotrowski @ 2007-08-27 17:31 UTC (permalink / raw)
  To: David Newall; +Cc: linux-kernel

Hi,

On 27/08/07, David Newall <david@davidnewall.com> wrote:
> help

http://www.kernel.org/pub/linux/docs/lkml/

Regards,
Michal

-- 
LOG
http://www.stardust.webpages.pl/log/

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
       [not found] <46D25A05.4070606@davidnewall.com>
@ 2007-08-27 17:18 ` David Newall
  2007-08-27 17:31   ` help Michal Piotrowski
  0 siblings, 1 reply; 278+ messages in thread
From: David Newall @ 2007-08-27 17:18 UTC (permalink / raw)
  To: linux-kernel

help

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
       [not found] <mailman.274497.1187370904.21973.nfs@lists.sourceforge.net>
@ 2007-08-18  5:35 ` Kapil Maheshwari
  0 siblings, 0 replies; 278+ messages in thread
From: Kapil Maheshwari @ 2007-08-18  5:35 UTC (permalink / raw)
  To: nfs



-----Original Message-----
From: nfs-bounces@lists.sourceforge.net
[mailto:nfs-bounces@lists.sourceforge.net] On Behalf Of
nfs-request@lists.sourceforge.net
Sent: Friday, August 17, 2007 10:45 PM
To: nfs@lists.sourceforge.net
Subject: NFS Digest, Vol 15, Issue 71

Send NFS mailing list submissions to
	nfs@lists.sourceforge.net

To subscribe or unsubscribe via the World Wide Web, visit
	https://lists.sourceforge.net/lists/listinfo/nfs
or, via email, send a message with subject or body 'help' to
	nfs-request@lists.sourceforge.net

You can reach the person managing the list at
	nfs-owner@lists.sourceforge.net

When replying, please edit your Subject line so it is more specific
than "Re: Contents of NFS digest..."


Today's Topics:

   1. StreamCorruptedException Urgent. (Ignatius Pradeep Kumar Joseph)
   2. Re: [PATCH] nfsstat: without option nfsstat always output the
      statistics of Client NFS v4( though sometimes they are all zero)
      (david m. richter)
   3. [PATCH] nfsstat: update manpage for --since (david m. richter)
   4. Re: [PATCH] 64 bit ino support for NFS server (J. Bruce Fields)
   5. Re: StreamCorruptedException Urgent. (Chuck Lever)


----------------------------------------------------------------------

Message: 1
Date: Fri, 17 Aug 2007 18:46:39 +0530
From: "Ignatius Pradeep Kumar Joseph"
	<IgnatiusPradeep_Joseph@mindtree.com>
Subject: [NFS] StreamCorruptedException Urgent.
To: <nfs@lists.sourceforge.net>
Message-ID:
	<9AE21525342E4C4F8ECDC61B978843BD03823274@mtw01ex02.mindtree.com>
Content-Type: text/plain; charset="us-ascii"

Hi,

 

We are facing the following issue "StreamCorruptedException", when we are
writing large files into NFS directory. The report we were trying to run was
of 41MB size. 

When we un-mount the NFS and write the large file directly to the
application
server directly, we don't face any issues. For the moment, in order to make
the CAT successful, we have un-mounted the NFS in QA2 and set up the same in
QA3 where the stack is deployed. 

 

But we have to test these reports with the NFS before we can release it to
other environments. Please help us in finding why this issue is only
happening when we are using NFS.

 

See below part of the stack trace. From our end we are also looking at
various forums to resolve this issue. 

 

2007-06-20 01:00:03,773 [service_SessionDataService-1.0] INFO
[platform.session.PlatformSessionHelper]  - end : invokeAppSessionServices()


2007-06-20 01:02:13,925 [service_ReportGeneratorService-1.0] ERROR
[common.helper.Timer]  - Report Staticstics:Total time taken to fill the
report is  :2.7473166 mins: :: 164839.0 millies 

2007-06-20 01:02:13,925 [service_ReportGeneratorService-1.0] ERROR
[jasper.printer.PDFReportPrinter]  - After invoking
JasperFillManager.fillReport

2007-06-20 01:02:13,926 [service_ReportGeneratorService-1.0] ERROR
[jasper.printer.PDFReportPrinter]  - Before invoking exporter.exportReport()

2007-06-20 01:02:19,589 [service_ReportGeneratorService-1.0] ERROR
[engine.fill.JRAbstractLRUVirtualizer]  - Error devirtualizing object

java.io.StreamCorruptedException: invalid stream header

            at
java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:737)

            at java.io.ObjectInputStream.<init>(ObjectInputStream.java:253)

            at
net.sf.jasperreports.engine.fill.JRAbstractLRUVirtualizer.readData(JRAbstrac
t
LRUVirtualizer.java:510)

            at
net.sf.jasperreports.engine.fill.JRSwapFileVirtualizer.pageIn(JRSwapFileVirt
u
alizer.java:112)

            at
net.sf.jasperreports.engine.fill.JRAbstractLRUVirtualizer.requestData(JRAbst
r
actLRUVirtualizer.java:401)

            at
net.sf.jasperreports.engine.base.JRVirtualPrintPage.ensureVirtualData(JRVirt
u
alPrintPage.java:312)

            at
net.sf.jasperreports.engine.base.JRVirtualPrintPage.getElements(JRVirtualPri
n
tPage.java:304)

            at
net.sf.jasperreports.engine.export.JRPdfExporter.exportPage(JRPdfExporter.ja
v
a:553)

 

Appreciate your help.

 

Regards,

Pradeep.

 



DISCLAIMER:
This message (including attachment if any) is confidential and may be
privileged. Before opening attachments please check them for viruses and
defects. MindTree Consulting Limited (MindTree) will not be responsible for
any viruses or defects or any forwarded attachments emanating either from
within MindTree or outside. If you have received this message by mistake
please notify the sender by return  e-mail and delete this message from your
system. Any unauthorized use or dissemination of this message in whole or in
part is strictly prohibited.Please note that e-mails are susceptible to
change and MindTree shall not be liable for any improper, untimely or
incomplete transmission.
E-mail may contain viruses. Before opening attachments please check them for
viruses and defects. While MindTree Consulting Limited (MindTree) has put in
place checks to minimize the risks, MindTree will not be responsible for any
viruses or defects or any forwarded attachments emanating either from within
MindTree or outside. 
-------------- next part --------------
An HTML attachment was scrubbed...

------------------------------

Message: 2
Date: Fri, 17 Aug 2007 11:04:29 -0400 (EDT)
From: "david m. richter" <richterd@citi.umich.edu>
Subject: Re: [NFS] [PATCH] nfsstat: without option nfsstat always
	output the statistics of Client NFS v4( though sometimes they are
all
	zero)
To: chuli <chul@cn.fujitsu.com>
Cc: nfs@lists.sourceforge.net
Message-ID: <Pine.BSO.4.64.0708171056030.32037@citi.umich.edu>
Content-Type: TEXT/PLAIN; charset=US-ASCII

> Hi,
> 
>    There is a bug when using nfsstat without options, the Client NFS 
> v4's statistics always are output.
>     Actually it should be output when they are all zero.
>     I looked up into the code and found it says "NFSv4 call counts ([0] 
> == 32)", but it is 35 in "/proc/net/rpc/nfs".

	hello,

	good eyes -- those extra calls are getacl, setacl, and 
fs_locations counts.  it's already been fixed in the git tree at 
git://linux-nfs.org/nfs-utils.


	cheers,

	d
	.



------------------------------

Message: 3
Date: Fri, 17 Aug 2007 12:50:42 -0400 (EDT)
From: "david m. richter" <richterd@citi.umich.edu>
Subject: [NFS] [PATCH] nfsstat: update manpage for --since
To: Neil Brown <neilb@suse.de>
Cc: nfs@lists.sourceforge.net
Message-ID: <Pine.BSO.4.64.0708171247130.32037@citi.umich.edu>
Content-Type: TEXT/PLAIN; charset=US-ASCII

	Add -S/--since to the manpage with a couple examples.

---
	Hello, Neil -- here's the manpage stuff.  I'm not so sure about 
the "Examples" additions, though.. meh.  thanks, d.

 utils/nfsstat/nfsstat.man |   41 ++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 40 insertions(+), 1 deletions(-)

diff --git a/utils/nfsstat/nfsstat.man b/utils/nfsstat/nfsstat.man
index 5d2acc5..6908b06 100644
--- a/utils/nfsstat/nfsstat.man
+++ b/utils/nfsstat/nfsstat.man
@@ -72,8 +72,27 @@ Display all of the above facilities.
 .B \-v, \-\-verbose
 This is equivalent to \fB\-o all\fR.
 .TP
+.BI "\-S, \-\-since " file
+Instead of printing current statistics,
+.B nfsstat
+imports statistics from
+.I file
+and displays the difference between those and the current statistics.
+Valid input
+.IR file "s may be in the form of "
+.B /proc/net/rpc/nfs
+(raw client stats),
+.B /proc/net/rpc/nfsd
+(raw server stats), or saved output from
+.B nfsstat
+itself (client and/or server stats).   Any statistics missing from a saved
+.B nfsstat
+output
+.I file
+are treated as zeroes.
+.TP
 .B \-Z, \-\-sleep
-Instead of printing statistics and immediately exiting,
+Instead of printing current statistics and immediately exiting,
 .B nfsstat
 takes a snapshot of the current statistics and pauses until it receives
 .B SIGINT
@@ -81,6 +100,7 @@ takes a snapshot of the current statisti
 .BR Ctrl-C ),
 at which point it takes another snapshot and displays the difference
 between the two.
+.\" --------------------- EXAMPLES -------------------------------
 .SH EXAMPLES
 .TP
 .B nfsstat \-o all \-234
@@ -97,6 +117,25 @@ Show statistics for \fBNFS\fR version 3
 .TP
 .B nfsstat \-m
 Show information about mounted \fBNFS\fR filesystems.
+.TP
+.B nfsstat -v >/tmp/stats; run_short_test.sh; nfsstat -v --since /tmp/stats
+Show statistics collected while a user's
+.B run_short_test.sh
+ran.
+.P
+.RE 3
+.nf
+.B run_long_test.sh &
+.B watch -n 5 eval 'nfsstat -4 --since /tmp/stats; nfsstat -4 >/tmp/stats'
+.fi
+.RS
+Using
+.BR watch (1),
+show updates every 5 seconds of NFSv4 activity being tested by a user's
+.B run_long_test.sh
+script.
+.RE
+
 .\" --------------------- DISPLAY --------------------------------
 .SH DISPLAY
 The \fBFlags\fR output from the \fB\-m\fR option is the same as the
-- 
1.4.4



------------------------------

Message: 4
Date: Fri, 17 Aug 2007 12:51:22 -0400
From: "J. Bruce Fields" <bfields@fieldses.org>
Subject: Re: [NFS] [PATCH] 64 bit ino support for NFS server
To: Peter Staubach <staubach@redhat.com>
Cc: Neil Brown <neilb@suse.de>, Andrew Morton
	<akpm@linux-foundation.org>,	NFS List <nfs@lists.sourceforge.net>
Message-ID: <20070817165122.GC28529@fieldses.org>
Content-Type: text/plain; charset=us-ascii

On Thu, Aug 16, 2007 at 12:10:07PM -0400, Peter Staubach wrote:
> Attached is a new patch which should address the issues raised
> by Bruce.

Thanks!

> I also haven't come to any conclusions regarding the value of
> lease_get_mtime() and whether it should or should not be invoked
> by fill_post_wcc() too.  I chose not to change this because I
> thought that it was safer to leave well enough alone.  If we
> decide to make a change, it can be done separately.

OK.

Only superficial complaints:
	- There were some minor whitespace oddities; running the patch
	  through scripts/checkpatch.pl may be the quickest way to catch
	  those.
	- This would be better as two, maybe three separate patches;
	  e.g.  moving the lease_get_mtime out of encode_fattr3 could be
	  done separately first.  Ideally we'd do some trivial
	  transformations like that, followed by one change that
	  actually changes the inode behavior.  That makes the whole
	  thing trival to review.

I fixed up the first and added the result to

	git://linux-nfs.org/~bfields/linux.git for-mm

so it should show up in the next -mm.  I'd happily replace it by a more
finely split up version if that was something you could whip up in a few
minutes.

--b.



------------------------------

Message: 5
Date: Fri, 17 Aug 2007 12:07:43 -0400
From: Chuck Lever <chuck.lever@oracle.com>
Subject: Re: [NFS] StreamCorruptedException Urgent.
To: Ignatius Pradeep Kumar Joseph
	<IgnatiusPradeep_Joseph@mindtree.com>
Cc: nfs@lists.sourceforge.net
Message-ID: <46C5C7CF.5040600@oracle.com>
Content-Type: text/plain; charset="windows-1252"

Ignatius Pradeep Kumar Joseph wrote:
> We are facing the following issue ?StreamCorruptedException?, when we 
> are writing large files into *NFS* directory. The report we were trying 
> to run was of 41MB size.
> 
> When we un-mount the NFS and write the large file directly to the 
> application server directly, we don?t face any issues. For the moment, 
> in order to make the CAT successful, we have un-mounted the NFS in QA2 
> and set up the same in QA3 where the stack is deployed.
> 
>  
> 
> But we have to test these reports with the NFS before we can release it 
> to other environments. Please help us in finding why this issue is only 
> happening when we are using NFS.
> 
>  
> 
> See below part of the stack trace. From our end we are also looking at 
> various forums to resolve this issue.

Hello-

The Exception message you posted is generated entirely within your Java 
environment.  Your problem description is very specific to your 
environment and application.  You need to debug your Java application 
first to determine what exactly NFS is doing to trigger this issue.

Without a lot of domain expertise, I suggest you start with strace to 
find out what system calls your application uses, and what return codes 
they generate, as your application encounters the error.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: chuck.lever.vcf
Type: text/x-vcard
Size: 290 bytes
Desc: not available

------------------------------

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/

------------------------------

_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs


End of NFS Digest, Vol 15, Issue 71
***********************************


DISCLAIMER
==========
This e-mail may contain privileged and confidential information which is the property of Persistent Systems Pvt. Ltd. It is intended only for the use of the individual or entity to which it is addressed. If you are not the intended recipient, you are not authorized to read, retain, copy, print, distribute or use this message. If you have received this communication in error, please notify the sender and delete all copies of this message. Persistent Systems Pvt. Ltd. does not accept any liability for virus infected mails.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

^ permalink raw reply related	[flat|nested] 278+ messages in thread

* help
@ 2007-05-16  0:25 Mao Wei
  0 siblings, 0 replies; 278+ messages in thread
From: Mao Wei @ 2007-05-16  0:25 UTC (permalink / raw)
  To: Linux Kernel Mailing List

Hi,
Anybody can give me some information about CFS

Thanks!


^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2006-08-29  8:12 help Limeng [李萌]
@ 2006-08-29  8:48 ` Jan Engelhardt
  0 siblings, 0 replies; 278+ messages in thread
From: Jan Engelhardt @ 2006-08-29  8:48 UTC (permalink / raw)
  To: Limeng [李萌]; +Cc: linux-kernel

[-- Attachment #1: Type: TEXT/PLAIN, Size: 263 bytes --]

>Hi,
>    How can I get one thread’s  LWP id on linux? 
>    The thread is not the main thread, so that getpid() does not work. 
>And the LWP id is not the same as the result by pthread_self().
>
>    Any suggestion?

gettid(), I assume.



Jan Engelhardt
-- 

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2006-08-29  8:12 Limeng [李萌]
  2006-08-29  8:48 ` help Jan Engelhardt
  0 siblings, 1 reply; 278+ messages in thread
From: Limeng [李萌] @ 2006-08-29  8:12 UTC (permalink / raw)
  To: linux-kernel

Hi,
    How can I get one thread’s  LWP id on linux? 
    The thread is not the main thread, so that getpid() does not work. And the LWP id is not the same as the result by pthread_self().

    Any suggestion?

Xixi
2006-8-29



^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2006-08-23 19:21 Archie Cotton
  0 siblings, 0 replies; 278+ messages in thread
From: Archie Cotton @ 2006-08-23 19:21 UTC (permalink / raw)
  To: linux-net

Do you want a w-atch?

In our online store you can buy r e p l i c a s of R o l e x watches and
other brands. They look and feel exactly like the real thing.

- We have 100+ different brands in our selection
- Best prices on the market Just For You
- Great Discount Live Support Extended Warranty
- Free shipping if you order 2 or more
- Save up to 85% compared to the cost of other r e p l i c a s
- Standard Features:
- Screw-in crown
- Unidirectional turning bezel where appropriate
- All the appropriate r o l e x logos, on crown and dial
- Heavy weight

Clisk here: http://superty.info













"It's yours.
That was the only way he could account for this bizarre behavior — she had seen the marks after all, and this was the beginning of some new and spectacular punishment.
As a result, hadn't his "serious fiction»become steadily more self-conscious, a sort of scream?
-
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2006-08-23 19:21 Archie Cotton
  0 siblings, 0 replies; 278+ messages in thread
From: Archie Cotton @ 2006-08-23 19:21 UTC (permalink / raw)
  To: linux-net

Do you want a w-atch?

In our online store you can buy r e p l i c a s of R o l e x watches and
other brands. They look and feel exactly like the real thing.

- We have 100+ different brands in our selection
- Best prices on the market Just For You
- Great Discount Live Support Extended Warranty
- Free shipping if you order 2 or more
- Save up to 85% compared to the cost of other r e p l i c a s
- Standard Features:
- Screw-in crown
- Unidirectional turning bezel where appropriate
- All the appropriate r o l e x logos, on crown and dial
- Heavy weight

Clisk here: http://superty.info













"It's yours.
That was the only way he could account for this bizarre behavior — she had seen the marks after all, and this was the beginning of some new and spectacular punishment.
As a result, hadn't his "serious fiction»become steadily more self-conscious, a sort of scream?
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2006-08-16 12:46 Hemanth KumarBS
  0 siblings, 0 replies; 278+ messages in thread
From: Hemanth KumarBS @ 2006-08-16 12:46 UTC (permalink / raw)
  To: linuxppc-embedded

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

Hi,

I am working on PPC-8248. Is montavista has driver for DMA based SPI 
driver ? 

Regards
Hemanth

[-- Attachment #2: Type: text/html, Size: 277 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2006-08-15  2:35 derrywang
  0 siblings, 0 replies; 278+ messages in thread
From: derrywang @ 2006-08-15  2:35 UTC (permalink / raw)
  To: linux-ide

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

Dear Uwe Koziolek,

Hi, Can you help me?
I am a engineer of a linux company. I want to install a linux 
distribution on one notebook.
But I failed because of SATA HDD driver problem.
The hardware of this notebook is : SISM662MXZ+966LZ. I download the new 
driver source from SIS website.
Unfortunnly I failed again.
The detail dmesg and lspci information are touched by attachment. please 
check it.
The main problem is ( I guess)
driver can not get the correct SCR_STATUS register value. So Sata link down.

In the last, please forgive me for the poor english. :-)
Thank you!

Best Regards,
Derry


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: dmesg.log --]
[-- Type: text/x-log; name="dmesg.log", Size: 15346 bytes --]

Linux version 2.6.16 (root@localhost.localdomain) (gcc 版本 3.4.6) #1 Mon Aug 14 14:34:39 CST 2006
BIOS-provided physical RAM map:
 BIOS-e820: 0000000000000000 - 000000000009dc00 (usable)
 BIOS-e820: 000000000009dc00 - 00000000000a0000 (reserved)
 BIOS-e820: 00000000000e4000 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 000000000dd90000 (usable)
 BIOS-e820: 000000000dd90000 - 000000000dd9f000 (ACPI data)
 BIOS-e820: 000000000dd9f000 - 000000000de00000 (ACPI NVS)
 BIOS-e820: 000000000de00000 - 000000000e000000 (reserved)
 BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved)
 BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
 BIOS-e820: 00000000fff00000 - 0000000100000000 (reserved)
0MB HIGHMEM available.
221MB LOWMEM available.
On node 0 totalpages: 56720
  DMA zone: 4096 pages, LIFO batch:0
  DMA32 zone: 0 pages, LIFO batch:0
  Normal zone: 52624 pages, LIFO batch:15
  HighMem zone: 0 pages, LIFO batch:0
DMI present.
ACPI: RSDP (v000 PTLTD                                 ) @ 0x000f93b0
ACPI: RSDT (v001 PTLTD    RSDT   0x06040000  LTP 0x00000000) @ 0x0dd9a278
ACPI: FADT (v001 SiS    662MX    0x06040000 PTL  0x000f4240) @ 0x0dd9eef2
ACPI: MADT (v001 PTLTD  	 APIC   0x06040000  LTP 0x00000000) @ 0x0dd9ef66
ACPI: MCFG (v001 PTLTD    MCFG   0x06040000  LTP 0x00000000) @ 0x0dd9efc4
ACPI: SSDT (v001  PmRef    CpuPm 0x00003000 INTL 0x20050228) @ 0x0dd9a2ac
ACPI: DSDT (v001 PTLTD       662 0x06040000 MSFT 0x0100000e) @ 0x00000000
ACPI: PM-Timer IO Port: 0x8008
Allocating PCI resources starting at 10000000 (gap: 0e000000:f0c00000)
Built 1 zonelists
Kernel command line: vga=769 max_loop=255 initrd=boot/initrd.gz init=linuxrc load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=4444 root=/dev/ram0 rw BOOT_IMAGE=boot/vmlinuz 
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Initializing CPU#0
PID hash table entries: 1024 (order: 10, 16384 bytes)
Detected 1600.284 MHz processor.
Using pmtmr for high-res timesource
Console: colour dummy device 80x25
Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
Memory: 216716k/226880k available (4164k kernel code, 9568k reserved, 1284k data, 496k init, 0k highmem)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Calibrating delay using timer specific routine.. 3207.47 BogoMIPS (lpj=6414944)
Security Framework v1.0.0 initialized
Mount-cache hash table entries: 512
CPU: After generic identify, caps: bfe9fbff 00100000 00000000 00000000 0000c189 00000000 00000000
CPU: After vendor identify, caps: bfe9fbff 00100000 00000000 00000000 0000c189 00000000 00000000
monitor/mwait feature present.
using mwait in idle threads.
CPU: L1 I cache: 32K, L1 D cache: 32K
CPU: L2 cache: 2048K
CPU: After all inits, caps: bfe9fbff 00100000 00000000 00000140 0000c189 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
CPU: Intel Genuine Intel(R) CPU            1050  @ 1.60GHz stepping 08
Checking 'hlt' instruction... OK.
ACPI: setting ELCR to 0800 (from 0eb8)
checking if image is initramfs...it isn't (no cpio magic); looks like an initrd
Freeing initrd memory: 1320k freed
NET: Registered protocol family 16
ACPI: bus type pci registered
PCI: BIOS BUG #81[000fdda0] found
PCI: Using MMCONFIG
ACPI: Subsystem revision 20060127
ACPI: Interpreter enabled
ACPI: Using PIC for interrupt routing
ACPI Error (nsxfeval-0242): Handle is NULL and Pathname is relative [20060127]
ACPI Error (nsxfeval-0242): Handle is NULL and Pathname is relative [20060127]
ACPI Error (nsxfeval-0242): Handle is NULL and Pathname is relative [20060127]
ACPI Error (nsxfeval-0242): Handle is NULL and Pathname is relative [20060127]
ACPI: PCI Root Bridge [PCI0] (0000:00)
PCI: Probing PCI hardware (bus 00)
PCI: Ignoring BAR0-3 of IDE controller 0000:00:02.5
Boot video device is 0000:01:00.0
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 7 *9 10 11)
ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 *5 7 9 10 11)
ACPI: PCI Interrupt Link [LNKC] (IRQs 3 *4 5 7 9 10 11)
ACPI: PCI Interrupt Link [LNKD] (IRQs *3 4 5 7 9 10 11)
ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 7 9 10 *11)
ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 7 9 *10 11)
ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 7 9 10 11) *0, disabled.
ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 *7 9 10 11)
ACPI: Embedded Controller [EC0] (gpe 31) interrupt mode.
Linux Plug and Play Support v0.97 (c) Adam Belay
SCSI subsystem initialized
usbcore: registered new driver usbfs
usbcore: registered new driver hub
PCI: Using ACPI for IRQ routing
PCI: If a device doesn't work, try "pci=routeirq".  If it helps, post a report
PCI: Ignore bogus resource 6 [0:0] of 0000:01:00.0
PCI: Bridge: 0000:00:01.0
  IO window: 9000-9fff
  MEM window: d4000000-d40fffff
  PREFETCH window: c8000000-cfffffff
PCI: Bridge: 0000:00:06.0
  IO window: disabled.
  MEM window: d4100000-d41fffff
  PREFETCH window: disabled.
PCI: Bridge: 0000:00:07.0
  IO window: disabled.
  MEM window: dc000000-dfffffff
  PREFETCH window: disabled.
PCI: Bridge: 0000:00:1f.0
  IO window: disabled.
  MEM window: disabled.
  PREFETCH window: disabled.
PCI: Setting latency timer of device 0000:00:01.0 to 64
PCI: Setting latency timer of device 0000:00:06.0 to 64
PCI: Setting latency timer of device 0000:00:07.0 to 64
ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 9
PCI: setting IRQ 9 as level-triggered
ACPI: PCI Interrupt 0000:00:1f.0[A] -> Link [LNKA] -> GSI 9 (level, low) -> IRQ 9
PCI: Setting latency timer of device 0000:00:1f.0 to 64
apm: BIOS version 1.2 Flags 0x03 (Driver version 1.16ac)
apm: overridden by ACPI.
VFS: Disk quotas dquot_6.5.1
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
NTFS driver 2.1.26 [Flags: R/O].
JFS: nTxBlock = 1705, nTxLock = 13640
SGI XFS with ACLs, security attributes, large block numbers, no debug enabled
SGI XFS Quota Management subsystem
Initializing Cryptographic API
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered (default)
PCI: Setting latency timer of device 0000:00:06.0 to 64
pcie_portdrv_probe->Dev[000a:1039] has invalid IRQ. Check vendor BIOS
assign_interrupt_mode Found MSI capability
Allocate Port Service[0000:00:06.0:pcie00]
Allocate Port Service[0000:00:06.0:pcie01]
Allocate Port Service[0000:00:06.0:pcie02]
Allocate Port Service[0000:00:06.0:pcie03]
PCI: Setting latency timer of device 0000:00:07.0 to 64
pcie_portdrv_probe->Dev[000a:1039] has invalid IRQ. Check vendor BIOS
assign_interrupt_mode Found MSI capability
Allocate Port Service[0000:00:07.0:pcie00]
Allocate Port Service[0000:00:07.0:pcie01]
Allocate Port Service[0000:00:07.0:pcie02]
Allocate Port Service[0000:00:07.0:pcie03]
ACPI: PCI Interrupt 0000:00:1f.0[A] -> Link [LNKA] -> GSI 9 (level, low) -> IRQ 9
PCI: Setting latency timer of device 0000:00:1f.0 to 64
assign_interrupt_mode Found MSI capability
Allocate Port Service[0000:00:1f.0:pcie00]
pci_hotplug: PCI Hot Plug PCI Core version: 0.5
vesafb: framebuffer at 0xc8000000, mapped to 0xce980000, using 600k, total 32768k
vesafb: mode is 640x480x8, linelength=640, pages=24
vesafb: protected mode interface info at cc82:0004
vesafb: scrolling: redraw
vesafb: Pseudocolor: size=6:6:6:6, shift=0:0:0:0
Console: switching to colour frame buffer device 80x30
fb0: VESA VGA frame buffer device
ACPI: AC Adapter [ACAD] (off-line)
ACPI: Battery Slot [BAT1] (battery present)
ACPI: Power Button (FF) [PWRF]
ACPI: Power Button (CM) [PWRB]
ACPI: Sleep Button (CM) [SLPB]
ACPI: Lid Switch [LID]
ACPI: Video Device [VGA0] (multi-head: yes  rom: no  post: no)
ACPI: CPU0 (power states: C1[C1] C2[C2])
ACPI: Processor [CPU0] (supports 8 throttling states)
ACPI: Thermal Zone [TZ00] (33 C)
isapnp: Scanning for PnP cards...
isapnp: No Plug & Play device found
Real Time Clock Driver v1.12ac
PNP: No PS/2 controller found. Probing ports directly.
serio: i8042 AUX port at 0x60,0x64 irq 12
serio: i8042 KBD port at 0x60,0x64 irq 1
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
floppy0: no floppy controllers found
RAMDISK driver initialized: 16 RAM disks of 4444K size 1024 blocksize
loop: loaded (max 255 devices)
Compaq SMART2 Driver (v 2.6.0)
HP CISS Driver (v 2.6.10)
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
SIS5513: IDE controller at PCI slot 0000:00:02.5
ACPI: PCI Interrupt 0000:00:02.5[A] -> Link [LNKA] -> GSI 9 (level, low) -> IRQ 9
SIS5513: chipset revision 1
SIS5513: not 100% native mode: will probe irqs later
SIS5513: IDE controller at PCI slot 0000:00:02.5
ACPI: PCI Interrupt 0000:00:02.5[A] -> Link [LNKA] -> GSI 9 (level, low) -> IRQ 9
SIS5513: chipset revision 1
SIS5513: not 100% native mode: will probe irqs later
SIS_IDE: probe of 0000:00:02.5 failed with error -1
Probing IDE interface ide0...
hda: PHILIPS CD-RW/DVD-ROM SCB5265, ATAPI CD/DVD-ROM drive
Probing IDE interface ide1...
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hda: ATAPI 24X DVD-ROM CD-R/RW drive, 2048kB Cache
Uniform CD-ROM driver Revision: 3.20
ide-floppy driver 0.99.newide
Loading Adaptec I2O RAID: Version 2.4 Build 5go
Detecting Adaptec I2O RAID controllers...
Adaptec aacraid driver (1.1-4 Aug 14 2006 14:29:02)
scsi: <fdomain> Detection failed (no card)
sym53c416.c: Version 1.0.0-ac
qlogicfas: no cards were found, please specify I/O address and IRQ using iobase= and irq= optionsEmulex LightPulse Fibre Channel SCSI driver 8.1.1
Copyright(c) 2004-2005 Emulex.  All rights reserved.
Failed initialization of WD-7000 SCSI card!
megaraid cmm: 2.20.2.6 (Release Date: Mon Mar 7 00:01:03 EST 2005)
megaraid: 2.20.4.7 (Release Date: Mon Nov 14 12:27:22 EST 2005)
megasas: 00.00.02.04 Fri Feb 03 14:31:44 PST 2006
GDT-HA: Storage RAID Controller Driver. Version: 3.04 
GDT-HA: Found 0 PCI Storage RAID Controllers
3ware Storage Controller device driver for Linux v1.26.02.001.
3ware 9000 Storage Controller device driver for Linux v2.26.02.007.
nsp32: loading...
ipr: IBM Power RAID SCSI Device Driver version: 2.1.2 (February 8, 2006)
libata version 1.20 loaded.
I2O subsystem v1.325
i2o: max drivers = 8
I2O Configuration OSM v1.323
I2O Bus Adapter OSM v1.317
I2O Block Device OSM v1.325
I2O SCSI Peripheral OSM v1.316
I2O ProcFS OSM v1.316
Fusion MPT base driver 3.03.07
Copyright (c) 1999-2005 LSI Logic Corporation
Fusion MPT SPI Host driver 3.03.07
Fusion MPT FC Host driver 3.03.07
Fusion MPT SAS Host driver 3.03.07
usbmon: debugfs is not available
usbcore: registered new driver hiddev
usbcore: registered new driver usbhid
drivers/usb/input/hid-core.c: v2.6:USB HID core driver
mice: PS/2 mouse device common for all mice
NET: Registered protocol family 2
input: AT Translated Set 2 keyboard as /class/input/input0
IP route cache hash table entries: 2048 (order: 1, 8192 bytes)
TCP established hash table entries: 8192 (order: 3, 32768 bytes)
TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
TCP: Hash tables configured (established 8192 bind 8192)
TCP reno registered
TCP bic registered
Initializing IPsec netlink socket
NET: Registered protocol family 1
NET: Registered protocol family 17
Using IPI Shortcut mode
ACPI wakeup devices: 
PCI0  KBC USB0 USB1 USB2  LAN HDEF CBUS 
ACPI: (supports S0 S3 S4 S5)
RAMDISK: Compressed image found at block 0
VFS: Mounted root (ext2 filesystem).
Freeing unused kernel memory: 496k freed
ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 5
PCI: setting IRQ 5 as level-triggered
ACPI: PCI Interrupt 0000:00:05.0[A] -> Link [LNKB] -> GSI 5 (level, low) -> IRQ 5
sata_sis 0000:00:05.0: Detected SiS 182/1182/1183 SATA controller
ata1: SATA max UDMA/133 cmd 0x1448 ctl 0x143E bmdma 0x1410 irq 5
ata2: SATA max UDMA/133 cmd 0x1440 ctl 0x143A bmdma 0x1418 irq 5
ata1: SATA link down (SStatus 117)
scsi2 : sata_sis
ata2: SATA link down (SStatus 5)
scsi3 : sata_sis
squashfs: version 3.0 (2006/03/15) Phillip Lougher
Registering unionfs 20060423-1600
ISO 9660 Extensions: Microsoft Joliet Level 3
ISO 9660 Extensions: RRIP_1991A
Linux agpgart interface v0.101 (c) Dave Jones
fuse init (API version 7.6)
input: ImPS/2 Synaptics TouchPad as /class/input/input1
Intel ISA PCIC probe: not found.
Databook TCIC-2 PCMCIA probe: not found.
ath_hal: module license 'Proprietary' taints kernel.
ath_hal: 0.9.16.16 (AR5210, AR5211, AR5212, RF5111, RF5112, RF2413, RF5413)
wlan: 0.8.4.2 (svn 1531)
ath_rate_sample: 1.2 (svn 1531)
ath_pci: 0.9.4.5 (svn 1531)
ACPI: PCI Interrupt 0000:02:00.0[A] -> Link [LNKA] -> GSI 9 (level, low) -> IRQ 9
PCI: Setting latency timer of device 0000:02:00.0 to 64
wifi%d: unable to attach hardware: 'Hardware revision not supported' (HAL status 13)
ACPI: PCI interrupt for device 0000:02:00.0 disabled
shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 4
PCI: setting IRQ 4 as level-triggered
ACPI: PCI Interrupt 0000:00:0f.0[A] -> Link [LNKC] -> GSI 4 (level, low) -> IRQ 4
PCI: Setting latency timer of device 0000:00:0f.0 to 64
hda_codec: Unknown model for ALC262, trying auto-probe from BIOS...
sis190 Gigabit Ethernet driver 1.2 loaded.
ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 3
PCI: setting IRQ 3 as level-triggered
ACPI: PCI Interrupt 0000:00:04.0[A] -> Link [LNKD] -> GSI 3 (level, low) -> IRQ 3
PCI: Setting latency timer of device 0000:00:04.0 to 64
0000:00:04.0: Read MAC address from EEPROM
0000:00:04.0: Realtek PHY RTL8201 transceiver at address 31.
0000:00:04.0: Using transceiver at address 31 as default.
0000:00:04.0: SiS 190 PCI Fast Ethernet adapter at cea34000 (IRQ: 3), 00:17:00:00:00:00
eth0: GMII mode.
eth0: Enabling Auto-negotiation.
ACPI: PCI Interrupt Link [LNKH] enabled at IRQ 7
PCI: setting IRQ 7 as level-triggered
ACPI: PCI Interrupt 0000:00:03.3[D] -> Link [LNKH] -> GSI 7 (level, low) -> IRQ 7
ehci_hcd 0000:00:03.3: EHCI Host Controller
ehci_hcd 0000:00:03.3: new USB bus registered, assigned bus number 1
ehci_hcd 0000:00:03.3: irq 7, io mem 0xd4206000
ehci_hcd 0000:00:03.3: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 8 ports detected
ohci_hcd: 2005 April 22 USB 1.1 'Open' Host Controller (OHCI) Driver (PCI)
ACPI: PCI Interrupt Link [LNKE] enabled at IRQ 11
PCI: setting IRQ 11 as level-triggered
ACPI: PCI Interrupt 0000:00:03.0[A] -> Link [LNKE] -> GSI 11 (level, low) -> IRQ 11
ohci_hcd 0000:00:03.0: OHCI Host Controller
ohci_hcd 0000:00:03.0: new USB bus registered, assigned bus number 2
ohci_hcd 0000:00:03.0: irq 11, io mem 0xd4204000
usb usb2: configuration #1 chosen from 1 choice
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 4 ports detected
ACPI: PCI Interrupt Link [LNKF] enabled at IRQ 10
PCI: setting IRQ 10 as level-triggered
ACPI: PCI Interrupt 0000:00:03.1[B] -> Link [LNKF] -> GSI 10 (level, low) -> IRQ 10
ohci_hcd 0000:00:03.1: OHCI Host Controller
ohci_hcd 0000:00:03.1: new USB bus registered, assigned bus number 3
ohci_hcd 0000:00:03.1: irq 10, io mem 0xd4205000
usb usb3: configuration #1 chosen from 1 choice
hub 3-0:1.0: USB hub found
hub 3-0:1.0: 4 ports detected
agpgart: Unsupported SiS chipset (device id: 0662)
USB Universal Host Controller Interface driver v2.3

[-- Attachment #3: lspci.log --]
[-- Type: text/x-log, Size: 5172 bytes --]

00:00.0 Host bridge: Silicon Integrated Systems [SiS]: Unknown device 0662 (rev 01)
	Flags: bus master, medium devsel, latency 32
	Memory at d0000000 (32-bit, non-prefetchable) [size=64M]
	Capabilities: [c0] AGP version 3.5

00:01.0 PCI bridge: Silicon Integrated Systems [SiS] SiS AGP Port (virtual PCI-to-PCI bridge) (prog-if 00 [Normal decode])
	Flags: bus master, 66Mhz, fast devsel, latency 0
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
	I/O behind bridge: 00009000-00009fff
	Memory behind bridge: d4000000-d40fffff
	Prefetchable memory behind bridge: c8000000-cfffffff

00:02.0 ISA bridge: Silicon Integrated Systems [SiS]: Unknown device 0966 (rev 59)
	Flags: bus master, medium devsel, latency 0

00:02.5 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE] (rev 01) (prog-if 8a [Master SecP PriP])
	Subsystem: Silicon Integrated Systems [SiS] SiS5513 EIDE Controller (A,B step)
	Flags: bus master, medium devsel, latency 128, IRQ 9
	I/O ports at <ignored>
	I/O ports at <ignored>
	I/O ports at <ignored>
	I/O ports at <ignored>
	I/O ports at 1400 [size=16]
	Capabilities: [58] Power Management version 2

00:03.0 USB Controller: Silicon Integrated Systems [SiS] USB 1.0 Controller (rev 0f) (prog-if 10 [OHCI])
	Subsystem: QUANTA Computer Inc: Unknown device 0759
	Flags: bus master, medium devsel, latency 32, IRQ 11
	Memory at d4204000 (32-bit, non-prefetchable) [size=4K]

00:03.1 USB Controller: Silicon Integrated Systems [SiS] USB 1.0 Controller (rev 0f) (prog-if 10 [OHCI])
	Subsystem: QUANTA Computer Inc: Unknown device 0759
	Flags: bus master, medium devsel, latency 32, IRQ 10
	Memory at d4205000 (32-bit, non-prefetchable) [size=4K]

00:03.3 USB Controller: Silicon Integrated Systems [SiS] USB 2.0 Controller (prog-if 20 [EHCI])
	Subsystem: Silicon Integrated Systems [SiS] USB 2.0 Controller
	Flags: bus master, medium devsel, latency 32, IRQ 7
	Memory at d4206000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [50] Power Management version 2

00:04.0 Ethernet controller: Silicon Integrated Systems [SiS]: Unknown device 0190 (rev 01)
	Subsystem: QUANTA Computer Inc: Unknown device 0759
	Flags: bus master, medium devsel, latency 0, IRQ 3
	Memory at d4407000 (32-bit, non-prefetchable) [size=128]
	I/O ports at 1000 [size=128]
	Capabilities: [40] Power Management version 2

00:05.0 IDE interface: Silicon Integrated Systems [SiS]: Unknown device 1183 (rev 02) (prog-if 8f [Master SecP SecO PriP PriO])
	Subsystem: Silicon Integrated Systems [SiS]: Unknown device 1183
	Flags: bus master, medium devsel, latency 32, IRQ 5
	I/O ports at 1448 [size=8]
	I/O ports at 143c [size=4]
	I/O ports at 1440 [size=8]
	I/O ports at 1438 [size=4]
	I/O ports at 1410 [size=16]
	I/O ports at 1080 [size=128]
	Capabilities: [58] Power Management version 2

00:06.0 PCI bridge: Silicon Integrated Systems [SiS] PCI-to-PCI bridge (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
	Memory behind bridge: d4100000-d41fffff
	Capabilities: [b0] #0d [0000]
	Capabilities: [c0] Message Signalled Interrupts: 64bit- Queue=0/0 Enable-
	Capabilities: [d0] #10 [0141]
	Capabilities: [f4] Power Management version 2

00:07.0 PCI bridge: Silicon Integrated Systems [SiS] PCI-to-PCI bridge (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=00, secondary=03, subordinate=03, sec-latency=0
	Memory behind bridge: dc000000-dfffffff
	Capabilities: [b0] #0d [0000]
	Capabilities: [c0] Message Signalled Interrupts: 64bit- Queue=0/0 Enable-
	Capabilities: [d0] #10 [0141]
	Capabilities: [f4] Power Management version 2

00:0f.0 Class 0403: Silicon Integrated Systems [SiS]: Unknown device 7502
	Subsystem: Silicon Integrated Systems [SiS]: Unknown device 1234
	Flags: bus master, medium devsel, latency 0, IRQ 4
	Memory at d4200000 (32-bit, non-prefetchable) [size=16K]
	Capabilities: [50] Power Management version 2

00:1f.0 PCI bridge: Silicon Integrated Systems [SiS] PCI-to-PCI bridge (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=00, secondary=04, subordinate=04, sec-latency=0
	Capabilities: [d0] #10 [0141]
	Capabilities: [a0] Message Signalled Interrupts: 64bit- Queue=0/0 Enable-
	Capabilities: [f4] Power Management version 2

01:00.0 VGA compatible controller: Silicon Integrated Systems [SiS] 661/741/760/761 PCI/AGP VGA Display Adapter (rev 04) (prog-if 00 [VGA])
	Flags: 66Mhz, medium devsel, IRQ 9
	BIST result: 00
	Memory at c8000000 (32-bit, prefetchable) [size=128M]
	Memory at d4000000 (32-bit, non-prefetchable) [size=128K]
	I/O ports at 9000 [size=128]
	Expansion ROM at <unassigned> [disabled]
	Capabilities: [40] Power Management version 2
	Capabilities: [50] AGP version 3.0

02:00.0 Ethernet controller: Atheros Communications, Inc.: Unknown device 001c (rev 01)
	Subsystem: Unknown device 1a32:0100
	Flags: fast devsel, IRQ 9
	Memory at d4100000 (64-bit, non-prefetchable) [size=64K]
	Capabilities: [40] Power Management version 2
	Capabilities: [50] Message Signalled Interrupts: 64bit- Queue=0/0 Enable-
	Capabilities: [60] #10 [0011]
	Capabilities: [90] #11 [0000]


^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2006-04-09 20:47 amirhosein jahanbekam
  0 siblings, 0 replies; 278+ messages in thread
From: amirhosein jahanbekam @ 2006-04-09 20:47 UTC (permalink / raw)
  To: linux-mtd

Hi all
I have an 'at91rm9200 development kit'.
Recently, I `ve attached an 'AT45DB642' serial data
flash
to the board and installed uboot via XModem
successfully.
But somethings seemed to go wrong:

Firstly, uboot is not able to erase or unprotect the  
    flash as I tested  several versions of uboot and
also compiled 'u-boot-1.1.2' to be certain that
dataflash options are correctly enabled.
It pretend to work,but really does nothing.

Secondly, after booting via network,linux also is not
able to deal with flash operations, for instance:

--[root@AT91RM9200DK /root]$flash_erase
/dev/mtdblock/1
--Erase Total 1 Units
 but in fact nothing happens.


My linux version is '2.4.27-vrs1-ATMEL' and my mtd
configs are as follow.

 Tanks in advanced.
 
 Amir.H.J


#
# Memory Technology Devices (MTD)
#
CONFIG_MTD=y
CONFIG_MTD_DEBUG=y
CONFIG_MTD_DEBUG_VERBOSE=0
CONFIG_MTD_PARTITIONS=y
CONFIG_MTD_CONCAT=y
CONFIG_MTD_REDBOOT_PARTS=y
CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_AFS_PARTS=y
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLOCK=y
# CONFIG_FTL is not set
# CONFIG_NFTL is not set

#
# RAM/ROM/Flash chip drivers
#
CONFIG_MTD_CFI=y
# CONFIG_MTD_JEDECPROBE is not set
CONFIG_MTD_GEN_PROBE=y
# CONFIG_MTD_CFI_ADV_OPTIONS is not set
CONFIG_MTD_CFI_INTELEXT=y
# CONFIG_MTD_CFI_AMDSTD is not set
# CONFIG_MTD_CFI_STAA is not set
# CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set
# CONFIG_MTD_OBSOLETE_CHIPS is not set
# CONFIG_MTD_AMDSTD is not set
# CONFIG_MTD_SHARP is not set
# CONFIG_MTD_JEDEC is not set

#
# Mapping drivers for chip access
#
# CONFIG_MTD_PHYSMAP is not set
# CONFIG_MTD_NORA is not set
# CONFIG_MTD_ARM_INTEGRATOR is not set
# CONFIG_MTD_CDB89712 is not set
# CONFIG_MTD_SA1100 is not set
# CONFIG_MTD_DC21285 is not set
# CONFIG_MTD_IQ80310 is not set
# CONFIG_MTD_FORTUNET is not set
# CONFIG_MTD_EPXA is not set
# CONFIG_MTD_AUTCPU12 is not set
# CONFIG_MTD_EDB7312 is not set
# CONFIG_MTD_IMPA7 is not set
# CONFIG_MTD_CEIVA is not set
# CONFIG_MTD_PCI is not set
# CONFIG_MTD_PCMCIA is not set

#
# Self-contained MTD device drivers
#
# CONFIG_MTD_PMC551 is not set
# CONFIG_MTD_SLRAM is not set
CONFIG_MTD_AT91_DATAFLASH=y
CONFIG_MTD_AT91_DATAFLASH_CARD=y
CONFIG_MTD_MTDRAM=y
CONFIG_MTDRAM_TOTAL_SIZE=4096
CONFIG_MTDRAM_ERASE_SIZE=128
CONFIG_MTDRAM_ABS_POS=0
CONFIG_MTD_BLKMTD=y
# CONFIG_MTD_DOC1000 is not set
# CONFIG_MTD_DOC2000 is not set
# CONFIG_MTD_DOC2001 is not set
# CONFIG_MTD_DOCPROBE is not set

#
# NAND Flash Device Drivers
#
# CONFIG_MTD_NAND is not set
# CONFIG_MTD_AT91_SMARTMEDIA is not set

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2006-03-09  2:57 help zhaoyw
@ 2006-03-09  9:51 ` Matej Kupljen
  0 siblings, 0 replies; 278+ messages in thread
From: Matej Kupljen @ 2006-03-09  9:51 UTC (permalink / raw)
  To: zhaoyw; +Cc: linux-mips

Hi

> I seem to get cross-compile using Buildroot . And tinyx included .
> But when I nfs program to my target board. It can not run.
> Prompt is : /usr/X11R6/bin/Xfbdev:1: syntax error : " ( " unexpected.

Are you sure, this is a cross compiled binary?
Check it with the file command on the host machine, like:
# file Xfbdev

BR,
Matej

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2006-03-09  2:57 zhaoyw
  2006-03-09  9:51 ` help Matej Kupljen
  0 siblings, 1 reply; 278+ messages in thread
From: zhaoyw @ 2006-03-09  2:57 UTC (permalink / raw)
  To: linux-mips

I seem to get cross-compile using Buildroot . And tinyx included .
But when I nfs program to my target board. It can not run.
Prompt is : /usr/X11R6/bin/Xfbdev:1: syntax error : " ( " unexpected.
PS: my target board is mips arch.
Any suggestion.
Thanks in advance.

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
@ 2006-02-04  2:21 Oren Ben-Menachem
  0 siblings, 0 replies; 278+ messages in thread
From: Oren Ben-Menachem @ 2006-02-04  2:21 UTC (permalink / raw)
  To: linux-raid




^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2005-12-28 10:53 wayne.chen
  0 siblings, 0 replies; 278+ messages in thread
From: wayne.chen @ 2005-12-28 10:53 UTC (permalink / raw)
  To: linuxppc-embedded

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



[-- Attachment #2: Type: text/html, Size: 0 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
       [not found] <430C62420003CAE8@mail14.jumpyint.it>
@ 2005-12-08 17:18 ` helant2005
  0 siblings, 0 replies; 278+ messages in thread
From: helant2005 @ 2005-12-08 17:18 UTC (permalink / raw)
  To: netdev, Philip.Blundell, campbell, tim, tim, linux-parport,
	urban, urban, samba, jschlst, jschlst, linux-sna, ajk, ehaase,
	A2232, linux-m68k, Robert.Siemer, jgarzik, haumont, klucke,
	ilinux, ryanarn, boutcher, ipslinux, dwmw2

Hello Dear,
Good day to you , we know our message will come to you as a
surprise.
But we are totaly convinced in our mind to write you
this mail, we are HELLENA and ANTHONIO REMISSANTHE
the children of late general RAVIX REMISSANTHE of HAITI, our
father was killed just on april this year 2005 following his role
as a leader of an oposition part against the government of
president Jean Bertrand Aristide of HAITI, we were forced to leave
our country by government and we run to Abidjan the capital city of
Ivory Coast where our mother died as a result of her protracted
sickness (Diabetics).
Our contacting you is for you to stand as our guardian and investor
to the bank, to enable the bank transfer the money our late father
deposited in a bank here, into your bank account. As it's indicated
in the agrement letter he signed with the bank on the day of
deopsit.
The money in question is 3.8 million EURO, we want you to send the
following to enable us introduce you to the bank as our guardian
and investor, your full name, address, Phone and fax numbers.
Remember to keep this secret for the sake of our lives.Your prompt
reply will be highly appreciated. Please it is very important you
reply to this email adress; hel_ant2005@walla.com
Extend our greetings to your entire family.
Thanking you.
Yours Sincerely
Hellena and Anthonio Remissanthe.

________________________________________
Sfida subito i tuoi amici online! http://www.jumpy.mediaset.it/Canali_J/Giochi/Directory/Giochi_Multiplayer1.shtml

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2005-11-27 20:30 Matt Darcy
  0 siblings, 0 replies; 278+ messages in thread
From: Matt Darcy @ 2005-11-27 20:30 UTC (permalink / raw)
  To: linux-ide

subscribe

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
       [not found] <1122236195.3173.68.camel@localhost>
@ 2005-11-19 12:40 ` Yu Luming
  0 siblings, 0 replies; 278+ messages in thread
From: Yu Luming @ 2005-11-19 12:40 UTC (permalink / raw)
  To: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

On Monday 25 July 2005 04:16, Garry Williams wrote:
> how do I post to this list?  Where are my messages going?
This mailing list has size limit of 40k.

--Luming


-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.  Get Certified Today
Register for a JBoss Training Course.  Free Certification Exam
for All Training Attendees Through End of 2005. For more info visit:
http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2005-11-17  6:02 help prabha.j
@ 2005-11-17 14:04 ` Wolfgang Denk
  0 siblings, 0 replies; 278+ messages in thread
From: Wolfgang Denk @ 2005-11-17 14:04 UTC (permalink / raw)
  To: prabha.j; +Cc: linuxppc-embedded

In message <OFF101A064.257D1AD3-ON652570BC.0020DC73-652570BC.002126C8@tcs.com> you wrote:
> 
> I am trying to build kernel image for my custom borad which is similar to 
> mpc8260ads board. But i am getting the error.

"Similar to" means "not exactly the same", so you should  not  expect
that the code runs unchanged. As a minimum, you must carefully select
a configuration that matches your board.

...
> arch/ppc/kernel/entry.S: undefined reference to `__res'

Fix this!

Best regards,

Wolfgang Denk

-- 
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de
"Nature is very un-American.  Nature never hurries."
- William George Jordan

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2005-11-17  6:02 prabha.j
  2005-11-17 14:04 ` help Wolfgang Denk
  0 siblings, 1 reply; 278+ messages in thread
From: prabha.j @ 2005-11-17  6:02 UTC (permalink / raw)
  To: linuxppc-embedded

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


Hi all,
I am trying to build kernel image for my custom borad which is similar to 
mpc8260ads board. But i am getting the error.

I am using denx enldk and also the kernel source.

The error is
 make[1]: Entering directory 
`/home/cdot/eldk/ppc_6xx/usr/src/linux-2.4.25/arch/ppc/lib'
make all_targets
make[2]: Entering directory 
`/home/cdot/eldk/ppc_6xx/usr/src/linux-2.4.25/arch/ppc/lib'
make[2]: Nothing to be done for `all_targets'.
make[2]: Leaving directory 
`/home/cdot/eldk/ppc_6xx/usr/src/linux-2.4.25/arch/ppc/lib'
make[1]: Leaving directory 
`/home/cdot/eldk/ppc_6xx/usr/src/linux-2.4.25/arch/ppc/lib'
ppc_6xx-ld -T arch/ppc/vmlinux.lds -Ttext 0xc0000000 -Bstatic 
arch/ppc/kernel/head.o arch/ppc/kernel/idle_6xx.o init/main.o 
init/version.o init/do_mounts.o \
        --start-group \
        arch/ppc/kernel/kernel.o arch/ppc/platforms/platform.o 
arch/ppc/mm/mm.o arch/ppc/lib/lib.o kernel/kernel.o mm/mm.o fs/fs.o 
ipc/ipc.o \
         drivers/char/char.o drivers/block/block.o drivers/misc/misc.o 
drivers/net/net.o drivers/pci/driver.o drivers/mtd/mtdlink.o 
drivers/macintosh/macintosh.o drivers/media/media.o \
        net/network.o \
        /home/cdot/eldk/ppc_6xx/usr/src/linux-2.4.25/lib/lib.a \
        --end-group \
        -o vmlinux
arch/ppc/kernel/kernel.o(__ksymtab+0x480): In function `sys_call_table':
arch/ppc/kernel/entry.S: undefined reference to `__res'
make: *** [vmlinux] Error 1

Thanks in advance

Prabha J.
Tata Consultancy Services Limited
Mailto: prabha.j@tcs.com
Website: http://www.tcs.com

Notice: The information contained in this e-mail message and/or attachments to it may contain confidential or privileged information.   If you are not the intended recipient, any dissemination, use, review, distribution, printing or copying of the information contained in this e-mail message and/or attachments to it are strictly prohibited.   If you have received this communication in error, please notify us by reply e-mail or telephone and immediately and permanently delete the message and any attachments.  Thank you

[-- Attachment #2: Type: text/html, Size: 3272 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2005-11-16  8:26 help Hua Feijun
@ 2005-11-16  8:40 ` Ian McDonald
  0 siblings, 0 replies; 278+ messages in thread
From: Ian McDonald @ 2005-11-16  8:40 UTC (permalink / raw)
  To: Hua Feijun; +Cc: linux-kernel

On 11/16/05, Hua Feijun <hua.feijun@gmail.com> wrote:
> Hi everybody!
> Could anybody tell me the differentia between linux/em64t and linux/ia64?
> Should i notice anything during migrating a project form linux/ia64 to
> linux/em64t?
> Thanks!!!

They are two quite different processor architectures. Have a look
using Google at AMD Opteron/Intel Pentium 4 64 bit vs Intel Itanium
(IA64).

At the minimum you will need to recompile anything you do as they are
incompatiable

--
Ian McDonald
http://wand.net.nz/~iam4
WAND Network Research Group
University of Waikato
New Zealand

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2005-11-16  8:26 Hua Feijun
  2005-11-16  8:40 ` help Ian McDonald
  0 siblings, 1 reply; 278+ messages in thread
From: Hua Feijun @ 2005-11-16  8:26 UTC (permalink / raw)
  To: linux-kernel

Hi everybody!
Could anybody tell me the differentia between linux/em64t and linux/ia64?
Should i notice anything during migrating a project form linux/ia64 to
linux/em64t?
Thanks!!!

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2005-08-29  4:01 help raja
@ 2005-08-29  4:41 ` Randy.Dunlap
  0 siblings, 0 replies; 278+ messages in thread
From: Randy.Dunlap @ 2005-08-29  4:41 UTC (permalink / raw)
  To: raja; +Cc: linux-kernel

On Mon, 29 Aug 2005 09:31:31 +0530 raja wrote:

> I have subscribed in kernel newbie group.can anyone  you please tell me 
> how can i post a question please.

send email to:
kernelnewbies@nl.linux.org

---

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2005-08-29  4:01 raja
  2005-08-29  4:41 ` help Randy.Dunlap
  0 siblings, 1 reply; 278+ messages in thread
From: raja @ 2005-08-29  4:01 UTC (permalink / raw)
  To: Linux Kernel Mailing List

I have subscribed in kernel newbie group.can anyone  you please tell me 
how can i post a question please.

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2005-08-27  7:01 help raja
@ 2005-08-27  7:32 ` Pekka Enberg
  0 siblings, 0 replies; 278+ messages in thread
From: Pekka Enberg @ 2005-08-27  7:32 UTC (permalink / raw)
  To: raja; +Cc: Linux Kernel Mailing List

On 8/27/05, raja <vnagaraju@effigent.net> wrote:
> Hi,
>      I am new to linux kernel programming.Will you please give me the
> useful mailing lists and how to subscribe please.

Please refer to http://www.kernelnewbies.org/.

                             Pekka

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2005-08-27  7:01 raja
  2005-08-27  7:32 ` help Pekka Enberg
  0 siblings, 1 reply; 278+ messages in thread
From: raja @ 2005-08-27  7:01 UTC (permalink / raw)
  To: Linux Kernel Mailing List

Hi,
     I am new to linux kernel programming.Will you please give me the 
useful mailing lists and how to subscribe please.
raja.

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
       [not found]     ` <105c793f05080910595ceb4199-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2005-08-10  7:28       ` Bruno Ducrot
  0 siblings, 0 replies; 278+ messages in thread
From: Bruno Ducrot @ 2005-08-10  7:28 UTC (permalink / raw)
  To: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

On Tue, Aug 09, 2005 at 01:59:25PM -0400, Andrew Haninger wrote:
> On 8/9/05, androsov <androsov-aPYA7nAdAYY@public.gmane.org> wrote:
> > help 
> With?
> 
> Or is this a cleverly-disguised valid-email collector for spamming?
> 

The answer is always the same anyway :)

Could you send me the output of acpidmp, please ?

wget ftp://ftp.kernel.org//pub/linux/kernel/people/lenb/acpi/utils/pmtools-20031210.tar.bz2
tar xjvfp pmtools-20031210.tar.bz2
cd pmtools-20031210/acpidmp
make
sudo ./acpidmp > acpidmp.out
bzip2 acpidmp.out 

Then mail me the acpidmp.out.bz2

Cheers,

-- 
Bruno Ducrot

--  Which is worse:  ignorance or apathy?
--  Don't know.  Don't care.


-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
       [not found] ` <000001c59d07$3a9ee170$a14a3d0a-8fM5sft8TcWs1BDpvl8NfQ@public.gmane.org>
@ 2005-08-09 17:59   ` Andrew Haninger
       [not found]     ` <105c793f05080910595ceb4199-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 278+ messages in thread
From: Andrew Haninger @ 2005-08-09 17:59 UTC (permalink / raw)
  To: androsov; +Cc: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

On 8/9/05, androsov <androsov-aPYA7nAdAYY@public.gmane.org> wrote:
> help 
With?

Or is this a cleverly-disguised valid-email collector for spamming?

-Andy


-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2005-08-09 17:24 androsov
       [not found] ` <000001c59d07$3a9ee170$a14a3d0a-8fM5sft8TcWs1BDpvl8NfQ@public.gmane.org>
  0 siblings, 1 reply; 278+ messages in thread
From: androsov @ 2005-08-09 17:24 UTC (permalink / raw)
  To: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

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

help


[-- Attachment #2: Type: text/html, Size: 919 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2005-07-26  9:21 戴红刚
  0 siblings, 0 replies; 278+ messages in thread
From: 戴红刚 @ 2005-07-26  9:21 UTC (permalink / raw)
  To: linuxppc-embedded

thanks for your answer, my kernel is vxworks 5.5, can you give any help 
or advice?

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2005-07-25  7:50 support
  0 siblings, 0 replies; 278+ messages in thread
From: support @ 2005-07-25  7:50 UTC (permalink / raw)
  To: linux-scsi

help


^ permalink raw reply	[flat|nested] 278+ messages in thread

* RE: help
@ 2005-07-21 11:39 Jordan, Kyle
  0 siblings, 0 replies; 278+ messages in thread
From: Jordan, Kyle @ 2005-07-21 11:39 UTC (permalink / raw)
  To: ???; +Cc: linuxppc-embedded

>=20
>=20
> can you give me the driver of isp1362, thanks a lot.
>=20


I have a driver for the isp1362 in host controller mode for a 2.4.x
kernel.  However, isochronous endpoints are not working with it.  I
think there is another driver for the 2.6.x kernel out there.  Which
kernel are you using?

- Kyle

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2005-07-21  5:59 戴红刚
  0 siblings, 0 replies; 278+ messages in thread
From: 戴红刚 @ 2005-07-21  5:59 UTC (permalink / raw)
  To: linuxppc-embedded

can you give me the driver of isp1362, thanks a lot.

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2005-05-28 14:15 John W. M. Stevens
  0 siblings, 0 replies; 278+ messages in thread
From: John W. M. Stevens @ 2005-05-28 14:15 UTC (permalink / raw)
  To: linux-kernel

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



[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* HELP
  2005-05-19  6:23 help NEC
                   ` (5 preceding siblings ...)
  2005-05-19  6:23 ` help Stealth
@ 2005-05-19  6:25 ` Lev A. Melnikovsky
  6 siblings, 0 replies; 278+ messages in thread
From: Lev A. Melnikovsky @ 2005-05-19  6:25 UTC (permalink / raw)
  To: lm-sensors

HELP

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
  2005-05-19  6:23 help NEC
                   ` (4 preceding siblings ...)
  2005-05-19  6:23 ` help Kyösti Mälkki
@ 2005-05-19  6:23 ` Stealth
  2005-05-19  6:25 ` HELP Lev A. Melnikovsky
  6 siblings, 0 replies; 278+ messages in thread
From: Stealth @ 2005-05-19  6:23 UTC (permalink / raw)
  To: lm-sensors

im really confused, sensors-detect dosent seem to find my chip my 
motherboard is the ABIT KX7-KT333r and im running Redhat 7.3 kernel 
2.4.18-18.7.x  ...i untared lmsensors , and ran make all, make install 
it gave me warnings about files not being found like it said in the 
install file, then i did sensors-detect and ran defaults...
 

[root@Nooblesse root]# sensors-detect
 This program will help you to determine which I2C/SMBus modules you need to
 load to use lm_sensors most effectively.
 You need to have done a `make install', issued a `depmod -a' and made sure
 `/etc/conf.modules' (or `/etc/modules.conf') contains the appropriate
 module path before you can use some functions of this utility. Read
 doc/modules for more information.
 Also, you need to be `root', or at least have access to the 
/dev/i2c[-/]* files
 for some things. You can use prog/mkdev/mkdev.sh to create these /dev files
 if you do not have them already.
 If you have patched your kernel and have some drivers built-in you can
 safely answer NO if asked to load some modules. In this case, things may
 seem a bit confusing, but they will still work.

 IF THIS IS AN IBM THINKPAD, PRESS CTRL-C NOW!
 IBM Thinkpads have a severely broken i2c/SMBus implementation,  just 
scanning
 the bus will break your thinkpad forever!

 We can start with probing for (PCI) I2C or SMBus adapters.
 You do not need any special privileges for this.
 Do you want to probe now? (YES/no): YES
Probing for PCI bus adapters...
Sorry, no PCI bus adapters found.

 We will now try to load each adapter module in turn.
 Do you now want to be prompted for non-detectable adapters? (yes/NO): NO
 To continue, we need module `i2c-dev' to be loaded.
 If it is built-in into your kernel, you can safely skip this.
i2c-dev is already loaded.

 We are now going to do the adapter probings. Some adapters may hang halfway
 through; we can't really help that. Also, some chips will be double 
detected;
 we choose the one with the highest confidence value in that case.
 If you found that the adapter hung after probing a certain address, you can
 specify that address to remain unprobed. If you have a PIIX4, that often
 includes addresses 0x69 and/or 0x6a.

 Some chips are also accessible through the ISA bus. ISA probes are
 typically a bit more dangerous, as we have to write to I/O ports to do
 this.  Do you want to scan the ISA bus? (YES/no): YES
Probing for `National Semiconductor LM78'
  Trying address 0x0290... Failed!
Probing for `National Semiconductor LM78-J'
  Trying address 0x0290... Failed!
Probing for `National Semiconductor LM79'
  Trying address 0x0290... Failed!
Probing for `Winbond W83781D'
  Trying address 0x0290... Failed!
Probing for `Winbond W83782D'
  Trying address 0x0290... Failed!
Probing for `Winbond W83627HF'
  Trying address 0x0290... Failed!
Probing for `Winbond W83697HF'
  Trying address 0x0290... Success!
    (confidence 8, driver `Unwritten (W83697HF)')
Probing for `Silicon Integrated Systems SIS5595'
  Trying general detect... Failed!
Probing for `VIA Technologies VT 82C686 Integrated Sensors'
  Trying general detect... Failed!
Probing for `ITE IT8705F / IT8712F / SiS 950'
  Trying address 0x0290... Failed!

 Now follows a summary of the probes I have just done.
 Just press ENTER to continue:

Driver `Unwritten (W83697HF)' (should be inserted):
  Detects correctly:
  * ISA bus address 0x0290 (Busdriver `i2c-isa')
    Chip `Winbond W83697HF' (confidence: 8)


 I will now generate the commands needed to load the I2C modules.
 Sometimes, a chip is available both through the ISA bus and an I2C bus.
 ISA bus access is faster, but you need to load an additional driver module
 for it. If you have the choice, do you want to use the ISA bus or the
 I2C/SMBus (ISA/smbus)?

WARNING! If you have some things built into your kernel, the
below list will contain too many modules. Skip the appropriate ones!
To load everything that is needed, add this to some /etc/rc* file:

#----cut here----
# I2C adapter drivers
modprobe i2c-isa
# I2C chip drivers
modprobe Unwritten (W83697HF)
#----cut here----

To make the sensors modules behave correctly, add these lines to either
/etc/modules.conf or /etc/conf.modules:

#----cut here----
# I2C module options
alias char-major-89 i2c-dev
#----cut here----
[root@Nooblesse root]#

then i put the modules in /etc/rc and /etc/modules.conf

[root@Nooblesse root]# vi /etc/rc
rc          rc.d        rc.local    rc.sysinit  rc0.d       rc1.d       
rc2.d       rc3.d       rc4.d       rc5.d       rc6.d
[root@Nooblesse root]# vi /etc/rc
[root@Nooblesse root]# vi /etc/rc
[root@Nooblesse root]# vi /etc/mo
modules.conf   modules.conf~  motd
[root@Nooblesse root]# vi /etc/mo
modules.conf   modules.conf~  motd
[root@Nooblesse root]# vi /etc/mo
modules.conf   modules.conf~  motd
[root@Nooblesse root]# vi /etc/modules.conf
[root@Nooblesse root]# modprobe i2c-dev
[root@Nooblesse root]# sensors
No sensors found!
[root@Nooblesse root]# modprobe i2c-isa
[root@Nooblesse root]# sensors
No sensors found!
[root@Nooblesse root]#
  help! what am i doing wrong? linux is cool




^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
  2005-05-19  6:23 help NEC
                   ` (3 preceding siblings ...)
  2005-05-19  6:23 ` Help Mark Studebaker
@ 2005-05-19  6:23 ` Kyösti Mälkki
  2005-05-19  6:23 ` help Stealth
  2005-05-19  6:25 ` HELP Lev A. Melnikovsky
  6 siblings, 0 replies; 278+ messages in thread
From: Kyösti Mälkki @ 2005-05-19  6:23 UTC (permalink / raw)
  To: lm-sensors

On Sat, 30 Nov 2002, Stealth wrote:

> [root@Nooblesse root]# sensors-detect
>  This program will help you to determine which I2C/SMBus modules you need to
>  load to use lm_sensors most effectively.
...
> Probing for `Winbond W83697HF'
>   Trying address 0x0290... Success!
>     (confidence 8, driver `Unwritten (W83697HF)')

You did not tell release of lm_sensors you are running.
This chip is unsupported until 2.6.3.

-- 
  Ky?sti M?lkki
  kmalkki@cc.hut.fi

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
  2005-05-19  6:23 help NEC
  2005-05-19  6:23 ` help Jean Delvare
@ 2005-05-19  6:23 ` Ville Jutvik
  2005-05-19  6:23 ` Help phil
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 278+ messages in thread
From: Ville Jutvik @ 2005-05-19  6:23 UTC (permalink / raw)
  To: lm-sensors

Hi

My name is Ville Jutvik and I am voluteering for the lm_sensor project.I read at the homepage's FAQ that the project needed someone to help you with answering e-mails. I can do that (7 days/week), but I must warn you since my experience of lm_sensors is very small. I have only used it for a couple of days now but I think it's very interesting. 

My experience of Linux/Unix is quite large although (5 years). I am a fluent C-programmer and I find the kernel source-code very interesting and have studied it.

I would be very happy if I could contribute to the lm_sensor project!

Best regards,
Ville Jutvik
ville.jutvik@home.se   


^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
  2005-05-19  6:23 help NEC
                   ` (2 preceding siblings ...)
  2005-05-19  6:23 ` Help phil
@ 2005-05-19  6:23 ` Mark Studebaker
  2005-05-19  6:23 ` help Kyösti Mälkki
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 278+ messages in thread
From: Mark Studebaker @ 2005-05-19  6:23 UTC (permalink / raw)
  To: lm-sensors

*** PHIL ***
(have to do that to wake Phil up)
Phil, please add Ville to our mailing list.

Ville, thank you very much for the offer.
We'll add you to the list, watch the mails, and if you see one you think you can answer,
give it a try, copy the mailing list back again. 
Welcome!

Ville Jutvik wrote:
> 
> Hi
> 
> My name is Ville Jutvik and I am voluteering for the lm_sensor project.I read at the homepage's FAQ that the project needed someone to help you with answering e-mails. I can do that (7 days/week), but I must warn you since my experience of lm_sensors is very small. I have only used it for a couple of days now but I think it's very interesting.
> 
> My experience of Linux/Unix is quite large although (5 years). I am a fluent C-programmer and I find the kernel source-code very interesting and have studied it.
> 
> I would be very happy if I could contribute to the lm_sensor project!
> 
> Best regards,
> Ville Jutvik
> ville.jutvik@home.se

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
  2005-05-19  6:23 help NEC
  2005-05-19  6:23 ` help Jean Delvare
  2005-05-19  6:23 ` Help Ville Jutvik
@ 2005-05-19  6:23 ` phil
  2005-05-19  6:23 ` Help Mark Studebaker
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 278+ messages in thread
From: phil @ 2005-05-19  6:23 UTC (permalink / raw)
  To: lm-sensors


On Wed, Aug 07, 2002 at 05:27:59PM -0400, Mark Studebaker wrote:
> *** PHIL ***
> (have to do that to wake Phil up)
> Phil, please add Ville to our mailing list.

Yes, it works! :')
 
> Ville, thank you very much for the offer.
> We'll add you to the list, watch the mails, and if you see one you think you can answer,
> give it a try, copy the mailing list back again. 
> Welcome!

You are added.


Phil
 
-- 
Philip Edelbrock -- IS Manager -- Edge Design, Corvallis, OR
   phil@netroedge.com -- http://www.netroedge.com/~phil
 PGP F16: 01 D2 FD 01 B5 46 F4 F0  3A 8B 9D 7E 14 7F FB 7A

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2005-05-19  6:23 NEC
  2005-05-19  6:23 ` help Jean Delvare
                   ` (6 more replies)
  0 siblings, 7 replies; 278+ messages in thread
From: NEC @ 2005-05-19  6:23 UTC (permalink / raw)
  To: lm-sensors

 hi,

i have soltek drv4 mainboard and i don't know what sensor chip it has..
should it be supported or not? i've tried modprobe and after that it still said that no sensor chips were found.


NEC

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
  2005-05-19  6:23 help NEC
@ 2005-05-19  6:23 ` Jean Delvare
  2005-05-19  6:23 ` Help Ville Jutvik
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 278+ messages in thread
From: Jean Delvare @ 2005-05-19  6:23 UTC (permalink / raw)
  To: lm-sensors


> i have soltek drv4 mainboard and i don't know what sensor chip it
> has.. should it be supported or not? i've tried modprobe and after
> that it still said that no sensor chips were found.

Just run sensors-detect and see what it thinks about your motherboard.

-- 
Jean "Khali" Delvare
http://www.ensicaen.ismra.fr/~delvare/

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
  2005-05-13 13:25 [PATCH 2.6] vr41xx: remove old TB0219 driver Yoichi Yuasa
@ 2005-05-17  6:20 ` Steve Alexander
  0 siblings, 0 replies; 278+ messages in thread
From: Steve Alexander @ 2005-05-17  6:20 UTC (permalink / raw)
  To: linux-mips

help

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2005-05-10  8:01 andyliu
  0 siblings, 0 replies; 278+ messages in thread
From: andyliu @ 2005-05-10  8:01 UTC (permalink / raw)
  To: linux-fsdevel

how to join?
-- 
Yours andyliu

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2005-05-07 13:46 sen lin
  0 siblings, 0 replies; 278+ messages in thread
From: sen lin @ 2005-05-07 13:46 UTC (permalink / raw)
  To: linuxppc-embedded

only test how to use maillist

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2005-04-07 16:29 Help James Carlson
  2005-04-07 16:32 ` Help Kumar
@ 2005-04-07 16:42 ` Bill Unruh
  1 sibling, 0 replies; 278+ messages in thread
From: Bill Unruh @ 2005-04-07 16:42 UTC (permalink / raw)
  To: linux-ppp

Not sure what you mean. Each client must come in over their own link-- eg
you need a phone line and modem for each client (assuming they ae coming in
over phone lines). You cannot use one modem for 10 people at once.
Each link has one ppp session running it. You can have as many ppp sessions
running as you wish, one pppd for each session. 
I do not know what the limit is, probably memory.


On Thu, 7 Apr 2005, Kumar wrote:

> Hi,
>
>
> I have to run linux pppd as a server and need to support many ppp
> clients. I'm currently using linux pppd-2.4.2.
>
> Would you please tell me if the linux ppp has support for multi
> channels? If so, by default how many links it supports?
>
> If we have to increase the support for more connections, what needs to
> be done both in pppd and in kernel ppp?
>
>
> I'll appreciate any help or pointers in this regard.
>
> Thanks in advance.
>
>
> Regards,
>
> Kumar
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-ppp" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

-- 
William G. Unruh   |  Canadian Institute for|     Tel: +1(604)822-3273
Physics&Astronomy  |     Advanced Research  |     Fax: +1(604)822-5324
UBC, Vancouver,BC  |   Program in Cosmology |     unruh@physics.ubc.ca
Canada V6T 1Z1     |      and Gravity       |  www.theory.physics.ubc.ca/

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
  2005-04-07 16:29 Help James Carlson
@ 2005-04-07 16:32 ` Kumar
  2005-04-07 16:42 ` Help Bill Unruh
  1 sibling, 0 replies; 278+ messages in thread
From: Kumar @ 2005-04-07 16:32 UTC (permalink / raw)
  To: linux-ppp

Hi,

 
I have to run linux pppd as a server and need to support many ppp
clients. I'm currently using linux pppd-2.4.2.

Would you please tell me if the linux ppp has support for multi
channels? If so, by default how many links it supports?

If we have to increase the support for more connections, what needs to
be done both in pppd and in kernel ppp?

 
I'll appreciate any help or pointers in this regard.

Thanks in advance.
 

Regards,

Kumar


^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
@ 2005-04-07 16:29 James Carlson
  2005-04-07 16:32 ` Help Kumar
  2005-04-07 16:42 ` Help Bill Unruh
  0 siblings, 2 replies; 278+ messages in thread
From: James Carlson @ 2005-04-07 16:29 UTC (permalink / raw)
  To: linux-ppp

Kumar writes:
> I have to run linux pppd as a server and need to support many ppp
> clients. I'm currently using linux pppd-2.4.2.
> 
> Would you please tell me if the linux ppp has support for multi
> channels? If so, by default how many links it supports?

Each pppd process supports one link, but you may have as many pppd
processes and links as your system may accomodate.

-- 
James Carlson                                 <carlsonj@workingcode.com>

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2005-01-24  4:33 wayne.chen
  0 siblings, 0 replies; 278+ messages in thread
From: wayne.chen @ 2005-01-24  4:33 UTC (permalink / raw)
  To: linuxppc-embedded

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

help

[-- Attachment #2: Type: text/html, Size: 47 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2005-01-22 10:12 Help Pankaj Agarwal
@ 2005-01-22 11:16 ` Graeme T Ford
  0 siblings, 0 replies; 278+ messages in thread
From: Graeme T Ford @ 2005-01-22 11:16 UTC (permalink / raw)
  To: linux-kernel

There's a file in the kernel source directory, named "README".

I advise you do as it says and read it, specifically the "Configuring
the kernel" part.

Graeme.

On Sat, 22 Jan 2005 15:42:47 +0530, Pankaj Agarwal <pankaj@toughguy.net> wrote:
> Hi,
> 
> Kindly help/update me on how to set these parameters in the used kernel...
> 
> CONFIG_IP_ADVANCED_ROUTER
> 
> CONFIG_IP_MULTIPLE_TABLES
> 
> CONFIG_IP_ROUTE_MULTIPATH
> 
> Thanks and Regards,
> 
> Pankaj
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
>

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
@ 2005-01-22 10:12 Pankaj Agarwal
  2005-01-22 11:16 ` Help Graeme T Ford
  0 siblings, 1 reply; 278+ messages in thread
From: Pankaj Agarwal @ 2005-01-22 10:12 UTC (permalink / raw)
  To: linux-kernel

Hi,

Kindly help/update me on how to set these parameters in the used kernel...

CONFIG_IP_ADVANCED_ROUTER

CONFIG_IP_MULTIPLE_TABLES

CONFIG_IP_ROUTE_MULTIPATH

Thanks and Regards,

Pankaj



^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2005-01-11 15:51 ` help Greg KH
@ 2005-01-11 17:00   ` Theodore Ts'o
  0 siblings, 0 replies; 278+ messages in thread
From: Theodore Ts'o @ 2005-01-11 17:00 UTC (permalink / raw)
  To: Greg KH; +Cc: Bhupesh Kumar Pandey, Noida, linux-kernel

> On Tue, Jan 11, 2005 at 09:06:08PM +0530, Bhupesh Kumar Pandey, Noida wrote:
> >  
> > Actually My problem is to report the current problems in hotplugging of
> > FC-HBA on PCI Express for kernel 2.6.8 and don't have the hardware, I have
> > studied the code, searched and studied the documents available in the
> > internet, but I am not able to conclude. That is why I thought of taking
> > help from you experienced people.
> > I think now the problem is clear to you.
> 
> No, the problem is not clear to me.  I think it works just fine.  Why do
> you think it doesn't?

The problem here is that he doesn't know whether or not it works, but
instead of doing something sensible, like googling for problem
reports, he's being really annoying on the mailing list, hoping
someone else will do his work assignment for him.

						- Ted

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2005-01-11 15:36 help Bhupesh Kumar Pandey, Noida
  2005-01-11 15:51 ` help Greg KH
@ 2005-01-11 16:07 ` Erik Mouw
  1 sibling, 0 replies; 278+ messages in thread
From: Erik Mouw @ 2005-01-11 16:07 UTC (permalink / raw)
  To: Bhupesh Kumar Pandey, Noida; +Cc: Greg KH, linux-kernel

On Tue, Jan 11, 2005 at 09:06:08PM +0530, Bhupesh Kumar Pandey, Noida wrote:
> Actually My problem is to report the current problems in hotplugging of
> FC-HBA on PCI Express for kernel 2.6.8 and don't have the hardware, I have
> studied the code, searched and studied the documents available in the
> internet, but I am not able to conclude. That is why I thought of taking
> help from you experienced people.
> I think now the problem is clear to you.
> Please help me.

"It should work" means "there are currently no known problems".

You could ask the same question every single day, but it's much less
annoying for the lkml subscribers if you just follow the relevant
mailing lists.


Erik

-- 
+-- Erik Mouw -- www.harddisk-recovery.com -- +31 70 370 12 90 --
| A: Because people read from top to bottom.
| Q: Why is top posting bad?

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2005-01-11 15:36 help Bhupesh Kumar Pandey, Noida
@ 2005-01-11 15:51 ` Greg KH
  2005-01-11 17:00   ` help Theodore Ts'o
  2005-01-11 16:07 ` help Erik Mouw
  1 sibling, 1 reply; 278+ messages in thread
From: Greg KH @ 2005-01-11 15:51 UTC (permalink / raw)
  To: Bhupesh Kumar Pandey, Noida; +Cc: linux-kernel


A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing in e-mail?

A: No.
Q: Should I include quotations after my reply?


On Tue, Jan 11, 2005 at 09:06:08PM +0530, Bhupesh Kumar Pandey, Noida wrote:
>  
> Actually My problem is to report the current problems in hotplugging of
> FC-HBA on PCI Express for kernel 2.6.8 and don't have the hardware, I have
> studied the code, searched and studied the documents available in the
> internet, but I am not able to conclude. That is why I thought of taking
> help from you experienced people.
> I think now the problem is clear to you.

No, the problem is not clear to me.  I think it works just fine.  Why do
you think it doesn't?

greg k-h

^ permalink raw reply	[flat|nested] 278+ messages in thread

* RE: help
@ 2005-01-11 15:36 Bhupesh Kumar Pandey, Noida
  2005-01-11 15:51 ` help Greg KH
  2005-01-11 16:07 ` help Erik Mouw
  0 siblings, 2 replies; 278+ messages in thread
From: Bhupesh Kumar Pandey, Noida @ 2005-01-11 15:36 UTC (permalink / raw)
  To: Greg KH; +Cc: linux-kernel

 
Actually My problem is to report the current problems in hotplugging of
FC-HBA on PCI Express for kernel 2.6.8 and don't have the hardware, I have
studied the code, searched and studied the documents available in the
internet, but I am not able to conclude. That is why I thought of taking
help from you experienced people.
I think now the problem is clear to you.
Please help me.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Thanks and Best Regards
Bhupesh Kumar Pandey


-----Original Message-----
From: Greg KH [mailto:greg@kroah.com] 
Sent: Tuesday, January 11, 2005 8:47 PM
To: Bhupesh Kumar Pandey, Noida
Cc: linux-kernel@vger.kernel.org
Subject: Re: help

On Tue, Jan 11, 2005 at 07:58:26PM +0530, Bhupesh Kumar Pandey, Noida wrote:
>  
> Hi
> can any one list current problems in hotplug of FC-HBA on PCI Express 
> under kernel 2.6.8?

I don't wish to be annoying, but you have been asking this same question for
a while now.  You were told that this should work, and for you to report any
issues that you found.  So, I'm guessing that you have not yet actually
tried this out?  Why not?

greg k-h

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2005-01-11 14:28 help Bhupesh Kumar Pandey, Noida
@ 2005-01-11 15:16 ` Greg KH
  0 siblings, 0 replies; 278+ messages in thread
From: Greg KH @ 2005-01-11 15:16 UTC (permalink / raw)
  To: Bhupesh Kumar Pandey, Noida; +Cc: linux-kernel

On Tue, Jan 11, 2005 at 07:58:26PM +0530, Bhupesh Kumar Pandey, Noida wrote:
>  
> Hi
> can any one list current problems in hotplug of FC-HBA on PCI Express under
> kernel 2.6.8?

I don't wish to be annoying, but you have been asking this same question
for a while now.  You were told that this should work, and for you to
report any issues that you found.  So, I'm guessing that you have not
yet actually tried this out?  Why not?

greg k-h

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2005-01-11 14:28 Bhupesh Kumar Pandey, Noida
  2005-01-11 15:16 ` help Greg KH
  0 siblings, 1 reply; 278+ messages in thread
From: Bhupesh Kumar Pandey, Noida @ 2005-01-11 14:28 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg KH

 
Hi
can any one list current problems in hotplug of FC-HBA on PCI Express under
kernel 2.6.8?
 
 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Thanks and Best Regards

Bhupesh Kumar Pandey

Member Technical Staff

	   __   _

  / /  (_)__  __ ____  __  

 / /__/ / _ \/ // /\ \/ / 

/____/_/_//_/\___/ /_/\_\

	
System Software <outbind://10/main_files/image001.jpg> 

G: A-11, Sec-16, Noida ': 9891968828, 2510701:3124

	

 


^ permalink raw reply	[flat|nested] 278+ messages in thread

* HELP
@ 2004-12-11 11:25 Bartosz Hetmanski
  0 siblings, 0 replies; 278+ messages in thread
From: Bartosz Hetmanski @ 2004-12-11 11:25 UTC (permalink / raw)
  To: linux-scsi

HELP


^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2004-11-25  9:55 help Bakki Srinivas
@ 2004-11-27  9:57 ` Jan-Benedict Glaw
  0 siblings, 0 replies; 278+ messages in thread
From: Jan-Benedict Glaw @ 2004-11-27  9:57 UTC (permalink / raw)
  To: Linux C Programming

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

On Thu, 2004-11-25 15:25:23 +0530, Bakki Srinivas <bakki_srinivas@mindtree.com>
wrote in message <5959EA4638D8734599AB75EAAFBB6FEFA471E8@mtv01ex04.mindtree.com>:
> hi,
>     whats the equivalent of sprintf in the kernel mode?

sprintf()

MfG, JBG

-- 
Jan-Benedict Glaw       jbglaw@lug-owl.de    . +49-172-7608481             _ O _
"Eine Freie Meinung in  einem Freien Kopf    | Gegen Zensur | Gegen Krieg  _ _ O
 fuer einen Freien Staat voll Freier Bürger" | im Internet! |   im Irak!   O O O
ret = do_actions((curr | FREE_SPEECH) & ~(NEW_COPYRIGHT_LAW | DRM | TCPA));

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2004-11-25  9:55 Bakki Srinivas
  2004-11-27  9:57 ` help Jan-Benedict Glaw
  0 siblings, 1 reply; 278+ messages in thread
From: Bakki Srinivas @ 2004-11-25  9:55 UTC (permalink / raw)
  To: Linux C Programming

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

hi,
    whats the equivalent of sprintf in the kernel mode?

Thanks with Regards
Srinivas Bakki

[-- Attachment #2: disclaimer.txt --]
[-- Type: text/plain, Size: 1091 bytes --]

-----------------------------------------------------------------------------------------------------------------------------
Disclaimer
-----------------------------------------------------------------------------------------------------------------------------

"This message(including attachment if any)is confidential and may be privileged.Before opening attachments please check them
for viruses and defects.MindTree Consulting Private Limited (MindTree)will not be responsible for any viruses or defects or
any forwarded attachments emanating either from within MindTree or outside.If you have received this message by mistake please notify the sender by return  e-mail and delete this message from your system. Any unauthorized use or dissemination of this message in whole or in part is strictly prohibited.  Please note that e-mails are susceptible to change and MindTree shall not be liable for any improper, untimely or incomplete transmission."

-----------------------------------------------------------------------------------------------------------------------------

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2004-11-09  9:57 sebastian.ionita
  0 siblings, 0 replies; 278+ messages in thread
From: sebastian.ionita @ 2004-11-09  9:57 UTC (permalink / raw)
  To: netdev


____________________________________________________________
SC. FO Comunicatii SRL.
Sebastian Ionita
Administrator Sistem
mobil: 0724 212408
tel fix: 0264 450456 

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2004-10-20  5:05 help Srinivasa S
  2004-10-20  5:50 ` help Guy
@ 2004-10-21  1:47 ` Jon Lewis
  1 sibling, 0 replies; 278+ messages in thread
From: Jon Lewis @ 2004-10-21  1:47 UTC (permalink / raw)
  To: Srinivasa S; +Cc: linux-raid

On Wed, 20 Oct 2004, Srinivasa S wrote:

> i've a raid 5 setup with 3 disks each of 1 GB. i'm using it for some
> experimentation purpose. resync is n progress and is not ending at
> all. its almost 15 hrs since the resync started and the "cat
> /proc/mdstat" always shows something like this.
>
> Personalities : [raid5]
> md0 : active raid5 sdj1[2] sdi1[1] sdh1[0]
>       2002688 blocks level 5, 8k chunk, algorithm 2 [3/3] [UUU]
>       [>....................]  resync =  0.0% (0/1001344)
> finish=442287.5min speed=0K/sec

What kind of disks?  My bad Maxtor SATA drive caused similar issues.

----------------------------------------------------------------------
 Jon Lewis                   |  I route
 Senior Network Engineer     |  therefore you are
 Atlantic Net                |
_________ http://www.lewis.org/~jlewis/pgp for PGP public key_________

^ permalink raw reply	[flat|nested] 278+ messages in thread

* RE: help
  2004-10-20  5:05 help Srinivasa S
@ 2004-10-20  5:50 ` Guy
  2004-10-21  1:47 ` help Jon Lewis
  1 sibling, 0 replies; 278+ messages in thread
From: Guy @ 2004-10-20  5:50 UTC (permalink / raw)
  To: 'Srinivasa S', linux-raid

Your ETA is 307 days!  Your computer will be obsolete by then!  :)

Something is wrong.
The re-sync should take less than 10 minutes.

But I don't know what is wrong.

Guy

-----Original Message-----
From: linux-raid-owner@vger.kernel.org
[mailto:linux-raid-owner@vger.kernel.org] On Behalf Of Srinivasa S
Sent: Wednesday, October 20, 2004 1:06 AM
To: linux-raid@vger.kernel.org
Subject: help

i've a raid 5 setup with 3 disks each of 1 GB. i'm using it for some
experimentation purpose. resync is n progress and is not ending at
all. its almost 15 hrs since the resync started and the "cat
/proc/mdstat" always shows something like this.

Personalities : [raid5] 
md0 : active raid5 sdj1[2] sdi1[1] sdh1[0]
      2002688 blocks level 5, 8k chunk, algorithm 2 [3/3] [UUU]
      [>....................]  resync =  0.0% (0/1001344)
finish=442287.5min speed=0K/sec

is there anything wrong - can i possibly stop the resync. the problem
i'm having is that whichever process tries to do IO with the array is
hanging. please help. thanks.

srinivasa s
-
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2004-10-20  5:05 Srinivasa S
  2004-10-20  5:50 ` help Guy
  2004-10-21  1:47 ` help Jon Lewis
  0 siblings, 2 replies; 278+ messages in thread
From: Srinivasa S @ 2004-10-20  5:05 UTC (permalink / raw)
  To: linux-raid

i've a raid 5 setup with 3 disks each of 1 GB. i'm using it for some
experimentation purpose. resync is n progress and is not ending at
all. its almost 15 hrs since the resync started and the "cat
/proc/mdstat" always shows something like this.

Personalities : [raid5] 
md0 : active raid5 sdj1[2] sdi1[1] sdh1[0]
      2002688 blocks level 5, 8k chunk, algorithm 2 [3/3] [UUU]
      [>....................]  resync =  0.0% (0/1001344)
finish=442287.5min speed=0K/sec

is there anything wrong - can i possibly stop the resync. the problem
i'm having is that whichever process tries to do IO with the array is
hanging. please help. thanks.

srinivasa s

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2004-08-18 12:24 Manik Raina
  0 siblings, 0 replies; 278+ messages in thread
From: Manik Raina @ 2004-08-18 12:24 UTC (permalink / raw)
  To: linux-kernel

help

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help.
  2004-04-01 16:56 Help Jason C. Leach
@ 2004-04-01 17:00 ` Måns Rullgård
  0 siblings, 0 replies; 278+ messages in thread
From: Måns Rullgård @ 2004-04-01 17:00 UTC (permalink / raw)
  To: linux-raid

"Jason C. Leach" <jleach@ocis.net> writes:

> Help.

Thanks for the offer.  I'd like to know how to set up four ATA disks
for maximum performance, while retaining at least half the storage
space, and giving some fault tolerance.

-- 
Måns Rullgård
mru@kth.se

-
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help.
@ 2004-04-01 16:56 Jason C. Leach
  2004-04-01 17:00 ` Help Måns Rullgård
  0 siblings, 1 reply; 278+ messages in thread
From: Jason C. Leach @ 2004-04-01 16:56 UTC (permalink / raw)
  To: linux-raid

Help.

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2004-04-01  0:50 g lh
  0 siblings, 0 replies; 278+ messages in thread
From: g lh @ 2004-04-01  0:50 UTC (permalink / raw)
  To: netfilter-devel

I want to know iptables testing results about its 
thruput(bandwidth),dalay,lost packets rate.where can I find out?
Thanks!

_________________________________________________________________
与联机的朋友进行交流,请使用 MSN Messenger:  http://messenger.msn.com/cn  

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2004-03-06 17:00 help Billy Rose
@ 2004-03-06 19:22 ` Francois Romieu
  0 siblings, 0 replies; 278+ messages in thread
From: Francois Romieu @ 2004-03-06 19:22 UTC (permalink / raw)
  To: Billy Rose; +Cc: Linux Kernel

Billy Rose <billyrose@cox-internet.com> :
> the kernel mode console seems like a dead issue due to duplicate effort, what 
> can i help on?

Different lists are available at http://vger.kernel.org

The archive of your choice will give you a lot of answers.

--
Ueimor

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2004-03-06 17:00 Billy Rose
  2004-03-06 19:22 ` help Francois Romieu
  0 siblings, 1 reply; 278+ messages in thread
From: Billy Rose @ 2004-03-06 17:00 UTC (permalink / raw)
  To: Linux Kernel

the kernel mode console seems like a dead issue due to duplicate effort, what 
can i help on?

-- 
. ~billyrose/make

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2004-02-01 13:13 Rami Addady
  0 siblings, 0 replies; 278+ messages in thread
From: Rami Addady @ 2004-02-01 13:13 UTC (permalink / raw)
  To: linux-raid




^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help...
  2003-12-17 18:09 ` help Ian Hunter
@ 2003-12-17 18:22   ` Antony Stone
  0 siblings, 0 replies; 278+ messages in thread
From: Antony Stone @ 2003-12-17 18:22 UTC (permalink / raw)
  To: netfilter

On Wednesday 17 December 2003 6:09 pm, Ian Hunter wrote:

> Start off by giving us your existing rules?
> ----- Original Message -----
> From: "Cristiano Soares" <stillnick@terra.com.br>
> To: <netfilter@lists.netfilter.org>
> Sent: Sunday, December 14, 2003 5:30 PM
> Subject: help...
>
> Hi, i would like to know if u guys could help me with a simple problem that
> im having trying to set up a network server. I have DSL conection and im
> sharing it with a network. I had set up the DHCPD server, all the DHCP
> clients in my network can receive an IP from the server, but they cant
> browse. I know that there as some lines that i have to set up to make de
> server allow the clients to browser normaly. and i also know that it has
> something to do with iptables, and maskarading. Please, i need help doing
> this. I have MSN and ICQ if anyone would like to help me. I have SSH server
> running also. please, please, i need help. Thanks a lot.

Sounds like this guy simply needs to know:

iptables -A POSTROUTING -o $EXTIF -j MASQUERADE
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT

If that doesn't do the trick then yes, post your existing ruleset and tell us 
what works and what doesn't (and how you're testing it).

Antony.

-- 
Abandon hope, all ye who enter here.
You'll feel much better about things once you do.

                                                     Please reply to the list;
                                                           please don't CC me.



^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help...
  2003-12-14 22:30 help Cristiano Soares
@ 2003-12-17 18:09 ` Ian Hunter
  2003-12-17 18:22   ` help Antony Stone
  0 siblings, 1 reply; 278+ messages in thread
From: Ian Hunter @ 2003-12-17 18:09 UTC (permalink / raw)
  To: netfilter; +Cc: Cristiano Soares

Start off by giving us your existing rules?
----- Original Message ----- 
From: "Cristiano Soares" <stillnick@terra.com.br>
To: <netfilter@lists.netfilter.org>
Sent: Sunday, December 14, 2003 5:30 PM
Subject: help...


Hi, i would like to know if u guys could help me with a simple problem that
im having trying to set up a network server. I have DSL conection and im
sharing it with a network. I had set up the DHCPD server, all the DHCP
clients in my network can receive an IP from the server, but they cant
browse. I know that there as some lines that i have to set up to make de
server allow the clients to browser normaly. and i also know that it has
something to do with iptables, and maskarading. Please, i need help doing
this. I have MSN and ICQ if anyone would like to help me. I have SSH server
running also. please, please, i need help. Thanks a lot.

MSN: stillnick@hotmail.com
ICQ #: 3794264

Ass.: Cristian Soares



^ permalink raw reply	[flat|nested] 278+ messages in thread

* help...
@ 2003-12-14 22:30 Cristiano Soares
  2003-12-17 18:09 ` help Ian Hunter
  0 siblings, 1 reply; 278+ messages in thread
From: Cristiano Soares @ 2003-12-14 22:30 UTC (permalink / raw)
  To: netfilter

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

Hi, i would like to know if u guys could help me with a simple problem that im having trying to set up a network server. I have DSL conection and im sharing it with a network. I had set up the DHCPD server, all the DHCP clients in my network can receive an IP from the server, but they cant browse. I know that there as some lines that i have to set up to make de server allow the clients to browser normaly. and i also know that it has something to do with iptables, and maskarading. Please, i need help doing this. I have MSN and ICQ if anyone would like to help me. I have SSH server running also. please, please, i need help. Thanks a lot.

MSN: stillnick@hotmail.com
ICQ #: 3794264

Ass.: Cristian Soares

[-- Attachment #2: Type: text/html, Size: 1310 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2003-10-30 10:04 stefan.eletzhofer
  0 siblings, 0 replies; 278+ messages in thread
From: stefan.eletzhofer @ 2003-10-30 10:04 UTC (permalink / raw)
  To: linux-kernel

help

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2003-10-28  3:04 Kenneth H. Braun
  0 siblings, 0 replies; 278+ messages in thread
From: Kenneth H. Braun @ 2003-10-28  3:04 UTC (permalink / raw)
  To: linux-scsi

help

^ permalink raw reply	[flat|nested] 278+ messages in thread

* RE: help
@ 2003-08-29 13:58 Adeel Malik
  0 siblings, 0 replies; 278+ messages in thread
From: Adeel Malik @ 2003-08-29 13:58 UTC (permalink / raw)
  To: Steffen Malmgaard Mortensen; +Cc: linux-mips

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


Hi Steffen,
               I couldn't understand your point. I want to disable module
versioning and for this I start make menuconfig in the linux folder. From
this I disable module versioning and then I launck make dep, make clean and
then make from the toplevel directory.
I havn't checked the top-level makefile. Can you tell me what fields need to
be added to CFLAGS to disable the MODVERSIONING.



Regards,
Adeel

 -----Original Message-----
From: Steffen Malmgaard Mortensen [mailto:smm@futarque.com]
Sent: Friday, August 29, 2003 6:21 PM
To: Adeel Malik
Subject: Re: help


Have you tried with the CFLAGS from the kernel makefile?? 
/Steffen

Adeel Malik wrote:


 



[-- Attachment #2: Type: text/html, Size: 3134 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2003-08-29 12:57 Adeel Malik
  0 siblings, 0 replies; 278+ messages in thread
From: Adeel Malik @ 2003-08-29 12:57 UTC (permalink / raw)
  To: linux-mips

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

 

[-- Attachment #2: Type: text/html, Size: 311 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
       [not found] <20030725061502.30342.8650.Mailman@kashyyyk>
@ 2003-07-25 14:33 ` durga prasad
  0 siblings, 0 replies; 278+ messages in thread
From: durga prasad @ 2003-07-25 14:33 UTC (permalink / raw)
  To: netfilter

 --- netfilter-request@lists.netfilter.org wrote: >
Send netfilter mailing list submissions to
> 	netfilter@lists.netfilter.org
> 
> To subscribe or unsubscribe via the World Wide Web,
> visit
> 
>
https://lists.netfilter.org/mailman/listinfo/netfilter
> or, via email, send a message with subject or body
> 'help' to
> 	netfilter-request@lists.netfilter.org
> 
> You can reach the person managing the list at
> 	netfilter-admin@lists.netfilter.org
> 
> When replying, please edit your Subject line so it
> is more specific
> than "Re: Contents of netfilter digest..."
> 
> 
> Today's Topics:
> 
>    1. MARK - set with mask or read, add, set???
> (Bill Chappell)
>    2. VLANs and DNAT (Damien Mason)
>    3. ssl forward / proxy question (jen@saturn5.com)
>    4. Re: Not quite understanding DNAT (Philip
> Craig)
>    5. RE: ssl forward / proxy question (George
> Vieira)
>    6. (no subject) (Bryan Schmidt)
>    7. Re: -m limit --limt 1/s from "Bryan Schmidt"
> <absolut_bryan@hotmail.com> (Bill Chappell)
>    8. Re: DNAT question.. (Rio Martin.)
>    9. Re: Installing IPtables-1.2.8 (Jerry M. Howell
> II)
>   10. Re: Keeping Log (Jerry M. Howell II)
>   11. source quench packets (cc)
>   12. VLANS + intervlan forwarding + SNAT (Damien
> Mason)
>   13. RE: port-based filtering of IPsec packets?
> (Rick Kennell)
> 
> --__--__--
> 
> Message: 1
> Date: Thu, 24 Jul 2003 18:52:37 -0400
> From: Bill Chappell <chappell@borg.com>
> To: netfilter@lists.netfilter.org
> Subject: MARK - set with mask or read, add, set???
> 
> 
> --------------CC055BE056B322A30C53E8B1
> Content-Type: text/plain; charset=us-ascii
> Content-Transfer-Encoding: 7bit
> 
> > Condensed version - I need to share the nfmark
> with
> > another developer on the same packet, where I use
> the
> > high-order 8 bits and she can have the low-order
> 24 bits.
> > Problem is that -j MARK --set-mark writes one
> unsigned
> > integer so I would wipe out her nfmark and vice
> versa.
> >
> > I have successfully used a mask in a mark match:
> > iptables -t nat -A mychain -m mark --mark
> $mymark/0xFF000000
> > and had the packets flow as desired.
> >
> > It was not documented that a mask would work with
> > -j MARK --set-mark <number>/<mask>, but I tried
> > anyway.
> > I used <number> = 0xFF000000 (which does work by
> itself)
> > with <mask> = 0xFF000000 and <number> = 0xFFFFFFFF
> > with <mask> = 0xFF000000 and got the error
> message:
> > "Bad MARK value `<number>/<mask>'
> >
> > I could read the existing nfmark, add the second
> one, and set
> > the summed nfmark, but I do not see any way to
> read an nfmark
> > in iptables.
> >
> > I do see a solution using the mark match to
> identify the current
> > nfmark/mask (one rule for each possible nfmark)
> with the new nfmark
> > equal to the sum of the matching nfmark/mask and
> the nfmark
> > of the second use, but that gets clunky very
> quickly as the number
> > of possible nfmarks increases and it forces each
> use to know
> > which nfmarks the other is using (== reduced
> modularity).
> >
> > Any help would be greatly appreciated and
> attributed in the project.
> >
> > Thank you.
> >
> > Bill Chappell
> >
> >
> >
> >
> > --
> > William Chappell,     Software Engineer,    
> Critical Technologies, Inc.
> > Suite 400 Technology Center, 4th Floor 1001 Broad
> Street, Utica, NY 13501
> > 315-793-0248  x148  < bill.chappell@critical.com >
>  www.critical.com
> >
> 
> --------------CC055BE056B322A30C53E8B1
> Content-Type: text/html; charset=us-ascii
> Content-Transfer-Encoding: 7bit
> 
> <!doctype html public "-//w3c//dtd html 4.0
> transitional//en">
> <html>
> 
> <blockquote TYPE=CITE>Condensed version - I need to
> share the nfmark with
> <br>another developer on the same packet, where I
> use the
> <br>high-order 8 bits and she can have the low-order
> 24 bits.
> <br>Problem is that -j MARK --set-mark writes one
> unsigned
> <br>integer so I would wipe out her nfmark and vice
> versa.
> <p>I have successfully used a mask in a mark match:
> <br>iptables -t nat -A mychain -m mark --mark
> $mymark/0xFF000000
> <br>and had the packets flow as desired.
> <p>It was not documented that a mask would work with
> <br>-j MARK --set-mark &lt;number>/&lt;mask>, but I
> tried
> <br>anyway.
> <br>I used &lt;number> = 0xFF000000 (which does work
> by itself)
> <br>with &lt;mask> = 0xFF000000 and &lt;number> =
> 0xFFFFFFFF
> <br>with &lt;mask> = 0xFF000000 and got the error
> message:
> <br>"Bad MARK value `&lt;number>/&lt;mask>'
> <p>I could read the existing nfmark, add the second
> one, and set
> <br>the summed nfmark, but I do not see any way to
> read an nfmark
> <br>in iptables.
> <p>I do see a solution using the mark match to
> identify the current
> <br>nfmark/mask (one rule for each possible nfmark)
> with the new nfmark
> <br>equal to the sum of the matching nfmark/mask and
> the nfmark
> <br>of the second use, but that gets clunky very
> quickly as the number
> <br>of possible nfmarks increases and it forces each
> use to know
> <br>which nfmarks the other is using (== reduced
> modularity).
> <p>Any help would be greatly appreciated and
> attributed in the project.
> <p>Thank you.
> <p>Bill Chappell
> <br>&nbsp;
> <br>&nbsp;
> <br>&nbsp;
> <pre>--&nbsp;
> William Chappell,&nbsp;&nbsp;&nbsp;&nbsp; Software
> Engineer,&nbsp;&nbsp;&nbsp;&nbsp; Critical
> Technologies, Inc.
> Suite 400 Technology Center, 4th Floor 1001 Broad
> Street, Utica, NY 13501
> 315-793-0248&nbsp; x148&nbsp; &lt;
> bill.chappell@critical.com >&nbsp;
> www.critical.com</pre>
> </blockquote>
> </html>
> 
> --------------CC055BE056B322A30C53E8B1--
> 
> 
> 
> --__--__--
> 
> Message: 2
> Date: Fri, 25 Jul 2003 09:40:02 +1000
> From: Damien Mason <kinetic@suse.net.au>
> To: netfilter@lists.netfilter.org
> Subject: VLANs and DNAT
> 
> Hi Everyone,
> 
=== message truncated === 

=====
DURGAPRASAD
--
http://www.linuxindguy.com
UNDERSTANDING  ARISES THROUGH MAKING !!!!!!!

________________________________________________________________________
Want to chat instantly with your online friends?  Get the FREE Yahoo!
Messenger http://uk.messenger.yahoo.com/


^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2003-07-23  6:53 ` Adeel Malik
  0 siblings, 0 replies; 278+ messages in thread
From: Adeel Malik @ 2003-07-23  6:53 UTC (permalink / raw)
  To: linux-mips

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



[-- Attachment #2: Type: text/html, Size: 299 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2003-07-23  6:53 ` Adeel Malik
  0 siblings, 0 replies; 278+ messages in thread
From: Adeel Malik @ 2003-07-23  6:53 UTC (permalink / raw)
  To: linux-mips

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



[-- Attachment #2: Type: text/html, Size: 299 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2003-07-07 18:20 Justin Rush
  0 siblings, 0 replies; 278+ messages in thread
From: Justin Rush @ 2003-07-07 18:20 UTC (permalink / raw)
  To: linux-kernel



^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2003-06-06  5:55 Help madalin mihailescu
@ 2003-06-11  1:14 ` Lucas Correia Villa Real
  0 siblings, 0 replies; 278+ messages in thread
From: Lucas Correia Villa Real @ 2003-06-11  1:14 UTC (permalink / raw)
  To: madalin mihailescu, linux-kernel

Hi,

You can make use of the __setup() macro. A very simple example is given in the 
devfs source code, on the base.c file.

Kind regards,
Lucas


On Friday 06 June 2003 02:55, madalin mihailescu wrote:
> I have a project: implementing four page-out
> alghorythms. I want to be able to select one of them
> at reboot as the first thing I do.
>
> I’m thinking of using a variable, but I don’t know
> where to put it.
>
> 10x
>
> Madalin
>
>
> __________________________________________________
> Yahoo! Plus - For a better Internet experience
> http://uk.promotions.yahoo.com/yplus/yoffer.html
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/


^ permalink raw reply	[flat|nested] 278+ messages in thread

* RE: help
@ 2003-06-10 22:15 George Vieira
  0 siblings, 0 replies; 278+ messages in thread
From: George Vieira @ 2003-06-10 22:15 UTC (permalink / raw)
  To: dawn lin, netfilter

You have not mentioned anything about IPs so I assume they are on the same subnet. In that case, use a bridge which proxies the ARP requests and MAC addresses on each side of the firewall. Otherwise this won't work without routing.

A and C will see each other via B when B is setup as a bridge. You may need some patching on the kernel for iptables to work on a bridge.. not sure, brain dead this morning.. ;)

Thanks,
____________________________________________
George Vieira
Systems Manager
georgev@citadelcomputer.com.au

Citadel Computer Systems Pty Ltd
http://www.citadelcomputer.com.au

Phone   : +61 2 9955 2644
HelpDesk: +61 2 9955 2698
 

-----Original Message-----
From: dawn lin [mailto:alantisjun@hotmail.com]
Sent: Thursday, June 05, 2003 7:19 PM
To: netfilter@lists.netfilter.org
Subject: help


hi,

i have 3 computers A, B and C.
i need A to talk to C through B(not a router)

I was hoping iptables will help me do mac filtering.

is it possible?

What i need is A is able to talk B only and B is to resend A's message to B.
Which is in a way where A wants to talk to C but it can only go through B to 
talk to C.
Can anyone advice me how i can use iptables for that?

one senerio:
A send packets to C-> packet info shows MAC source=A, MAC dest=B,IP 
source=A,IP dest=C
When packet reaches B-> packet info shows MAC source=B,MAC dest=C,IP 
source=A,IP dest=C

is that possible?

_________________________________________________________________
Download Norah Jones, Eminem and more! http://www.msn.com.sg/ringtones/




^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
@ 2003-06-06  5:55 madalin mihailescu
  2003-06-11  1:14 ` Help Lucas Correia Villa Real
  0 siblings, 1 reply; 278+ messages in thread
From: madalin mihailescu @ 2003-06-06  5:55 UTC (permalink / raw)
  To: linux-kernel

I have a project: implementing four page-out
alghorythms. I want to be able to select one of them
at reboot as the first thing I do.

I’m thinking of using a variable, but I don’t know
where to put it.

10x

Madalin


__________________________________________________
Yahoo! Plus - For a better Internet experience
http://uk.promotions.yahoo.com/yplus/yoffer.html

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2003-06-05  9:19 dawn lin
  0 siblings, 0 replies; 278+ messages in thread
From: dawn lin @ 2003-06-05  9:19 UTC (permalink / raw)
  To: netfilter

hi,

i have 3 computers A, B and C.
i need A to talk to C through B(not a router)

I was hoping iptables will help me do mac filtering.

is it possible?

What i need is A is able to talk B only and B is to resend A's message to B.
Which is in a way where A wants to talk to C but it can only go through B to 
talk to C.
Can anyone advice me how i can use iptables for that?

one senerio:
A send packets to C-> packet info shows MAC source=A, MAC dest=B,IP 
source=A,IP dest=C
When packet reaches B-> packet info shows MAC source=B,MAC dest=C,IP 
source=A,IP dest=C

is that possible?

_________________________________________________________________
Download Norah Jones, Eminem and more! http://www.msn.com.sg/ringtones/



^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
  2003-06-02  7:47 supermount for 2.5 test version available Andrey Borzenkov
@ 2003-06-02  8:02 ` Pedro Requejo
  0 siblings, 0 replies; 278+ messages in thread
From: Pedro Requejo @ 2003-06-02  8:02 UTC (permalink / raw)
  To: linux-kernel



^ permalink raw reply	[flat|nested] 278+ messages in thread

* RE: help
@ 2003-06-02  0:54 김용철
  0 siblings, 0 replies; 278+ messages in thread
From: 김용철 @ 2003-06-02  0:54 UTC (permalink / raw)
  To: chandrashekhar dethe, nfs

You can check client's  ipchains or iptables.
Sometimes, this  is cause failure.
With regards,

Yongchul Kim.

-----Original Message-----
From: chandrashekhar dethe [mailto:cgdethe@yahoo.com]=20
Sent: Saturday, May 31, 2003 11:26 AM
To: nfs@lists.sourceforge.net
Subject: [NFS] help

Dear All,
I have been trying to mount server fs on the client
using nfs, but could not be successful in mounting fs.
Herewith I am attaching three files which can be
helpful to suggest the remedy.
1) test.txt  file - is a error message
2) rpcinfo_localhost.txt
3) rpcinfo_server.txt
Pl. suggest the appropriate remedy.

=20

=3D=3D=3D=3D=3D
with regards,

- C.G.DETHE.

__________________________________
Do you Yahoo!?
Yahoo! Calendar - Free online calendar with sync to Outlook(TM).
http://calendar.yahoo.com


-------------------------------------------------------
This SF.net email is sponsored by: eBay
Get office equipment for less on eBay!
http://adfarm.mediaplex.com/ad/ck/711-11697-6916-5
_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2003-05-31  2:25 chandrashekhar dethe
  0 siblings, 0 replies; 278+ messages in thread
From: chandrashekhar dethe @ 2003-05-31  2:25 UTC (permalink / raw)
  To: nfs

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

Dear All,
I have been trying to mount server fs on the client
using nfs, but could not be successful in mounting fs.
Herewith I am attaching three files which can be
helpful to suggest the remedy.
1) test.txt  file - is a error message
2) rpcinfo_localhost.txt
3) rpcinfo_server.txt
Pl. suggest the appropriate remedy.

 

=====
with regards,

- C.G.DETHE.

__________________________________
Do you Yahoo!?
Yahoo! Calendar - Free online calendar with sync to Outlook(TM).
http://calendar.yahoo.com

[-- Attachment #2: rpcinfo_localhost.txt --]
[-- Type: text/plain, Size: 909 bytes --]

[root@durga cgdethe]# /usr/sbin/rpcinfo -p 192.168.254.76
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp   1024  status
    100024    1   tcp   1024  status
    391002    2   tcp   1025  sgi_fam
    100011    1   udp   1008  rquotad
    100011    2   udp   1008  rquotad
    100011    1   tcp   1011  rquotad
    100011    2   tcp   1011  rquotad
    100005    1   udp   1025  mountd
    100005    1   tcp   1026  mountd
    100005    2   udp   1025  mountd
    100005    2   tcp   1026  mountd
    100005    3   udp   1025  mountd
    100005    3   tcp   1026  mountd
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100021    1   udp   1026  nlockmgr
    100021    3   udp   1026  nlockmgr
    100021    4   udp   1026  nlockmgr
    300019    1   tcp    622  amd
    300019    1   udp    623  amd


[-- Attachment #3: rpcinfo_server.txt --]
[-- Type: text/plain, Size: 841 bytes --]

[root@etc hpc_course]# /usr/sbin/rpcinfo -p 192.168.254.75
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp   1024  status
    100024    1   tcp   1024  status
    391002    2   tcp   1025  sgi_fam
    100011    1   udp   1015  rquotad
    100011    2   udp   1015  rquotad
    100011    1   tcp   1018  rquotad
    100011    2   tcp   1018  rquotad
    100005    1   udp   1026  mountd
    100005    1   tcp   1026  mountd
    100005    2   udp   1026  mountd
    100005    2   tcp   1026  mountd
    100005    3   udp   1026  mountd
    100005    3   tcp   1026  mountd
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100021    1   udp   1027  nlockmgr
    100021    3   udp   1027  nlockmgr
    100021    4   udp   1027  nlockmgr

[-- Attachment #4: test.txt --]
[-- Type: text/plain, Size: 238 bytes --]

[root@durga cgdethe]#  mount 192.168.254.75:/home /shrikant
mount: RPC: Port mapper failure - RPC: Unable to receive
[root@durga cgdethe]# mount 192.168.254.75:/home /home/cgdethe
mount: RPC: Port mapper failure - RPC: Unable to receive


^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2003-04-09  9:40 prem nath
  0 siblings, 0 replies; 278+ messages in thread
From: prem nath @ 2003-04-09  9:40 UTC (permalink / raw)
  To: netfilter



Hi ,
I have problem in configuring firewall using Iptables .I h...
8.0. I am using webmin to configure the firewall.
The existing IP is


2 static Ips are there from ISp eg:61.11.56.42,61.11.56.115
Webserver and DNS server is hosted on 61.11.56.42
I have an Internal network 192.168.1.x
The linux box has 2 Interfaces ETH0 61.11.56.115
eth1 is 192.168.1.19
ETH0 is connected to external and internal to switch is connected to
192.168.1.19.
They have a mail server where smtp and pop3 has to be forwarded .
Please let me know how to NAT 192.168.1.19 with 61.11.56.115.
At the same time squid proxy should work .
I need to allow ports 80,8080,22,21,23,25,110,1494,1328.
All the queries should reach the DNS server & Webserver(61.11.56.42)
eg:80,80801494,1328
Please do give me a plan so that I can forward all these to both servers
.(mail server * Webserver )
I have an idea of putting DNS server in linux firewall box but cant  forward
the queries to webserver.


Please do help me out with natting and forwarding .Getting really confused.
Awaiting reply .
Advance thanks
Regards
Prem




_________________________________________________________________
Vrroooom…… Fasten your seatbelts. 
http://server1.msn.co.in/msnSpecials/formula2003/index.asp Get set for F1 
2003



^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2003-03-08  6:10 help kalpesh
@ 2003-03-08  8:28 ` Patrick Schaaf
  0 siblings, 0 replies; 278+ messages in thread
From: Patrick Schaaf @ 2003-03-08  8:28 UTC (permalink / raw)
  To: kalpesh; +Cc: netfilter-devel

> Any suggestions ?

Ask netfilter users? They sit on a different mailing list. "It doesn't
work" is not something a developer can fix.

As a random guess: you miss rules permitting DNS name queries.

best regards
  Patrick

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2003-03-08  6:10 kalpesh
  2003-03-08  8:28 ` help Patrick Schaaf
  0 siblings, 1 reply; 278+ messages in thread
From: kalpesh @ 2003-03-08  6:10 UTC (permalink / raw)
  To: netfilter-devel

help

Slow respose after using IPTABLES

Hi all,
My mail server is runnig on Redhat 7.2 with Sendmail.
Now I want to use IPTABLES for the Security Point of view. For this I made
test server and implemented IPTABLES on it. But after using IPTABLES
respose from the server is SLOW  when i use POP3 clients but it works.

I am using following script.

# Deny All

/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT DROP

# Local host

/sbin/iptables -A INPUT -s localhost -d localhost -j ACCEPT
/sbin/iptables -A OUTPUT -s localhost -d localhost -j ACCEPT

# ICMP

/sbin/iptables -A INPUT -s $INTRANET  -d $MYHOST -p icmp -j ACCEPT
/sbin/iptables -A OUTPUT -s $MYHOST -d $INTRANET  -p icmp -j ACCEPT


# SMTP

/sbin/iptables -A INPUT -s $INTRANET -d $MYHOST -p tcp --dport smtp    -j
ACCEPT
/sbin/iptables -A OUTPUT -s $MYHOST -d $INTRANET -p tcp --sport smtp   -j
ACCEPT

# POP3

/sbin/iptables -A INPUT -s $INTRANET -d $MYHOST -p tcp --dport pop3    -j
ACCEPT
/sbin/iptables -A OUTPUT -s $MYHOST -d $INTRANET -p tcp --sport  pop3   -j
  ACCEPT

Any suggestions ? help ? Please

with warm regards

kalpesh

^ permalink raw reply	[flat|nested] 278+ messages in thread

* RE: help
@ 2003-02-17 15:04 Khanh Tran
  0 siblings, 0 replies; 278+ messages in thread
From: Khanh Tran @ 2003-02-17 15:04 UTC (permalink / raw)
  To: Laxman Gummadavally; +Cc: netfilter

Try:

/sbin/chkconfig --level=2345 ipchains off
/sbin/rmmod ipchains

Hope that helps.

Khanh Tran 
Network Operations 
Sarah Lawrence College 


-----Original Message-----
From: Laxman Gummadavally [mailto:laxman@oxynetworks.com]
Sent: Monday, February 17, 2003 5:11 AM
To: netfilter@lists.netfilter.org
Subject: help


Hi,

How to disable Ipchains in Linux???

I need to enable iptables ...........


Thanks
Laxman



^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2003-02-17 10:11 Laxman Gummadavally
  0 siblings, 0 replies; 278+ messages in thread
From: Laxman Gummadavally @ 2003-02-17 10:11 UTC (permalink / raw)
  To: netfilter

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

Hi,

How to disable Ipchains in Linux???

I need to enable iptables ...........


Thanks
Laxman

[-- Attachment #2: Type: text/html, Size: 652 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2003-01-02 21:01 Help lmonroy
@ 2003-01-03  7:17 ` Reinhard Karcher
  0 siblings, 0 replies; 278+ messages in thread
From: Reinhard Karcher @ 2003-01-03  7:17 UTC (permalink / raw)
  To: linux-msdos

On Thu, Jan 02, 2003 at 04:01:10PM -0500, lmonroy wrote
> I have been make test with dosemu and samba to migrate workstations from
> windows to linux, i have a little problem, i want to run a foxpro 2,6
> application but in some cases appear a message  INSUFFICIENT DISK SPACE
> but i have 3GB free disk space  on the server and my computer has 2gb
> free too.

Maybe, you have too much diskspace. Diskspace greater than 2GB may be
interpreted as negativ. You could try to reduce the free diskspace to less
than 2GB, and perhaps your application works.

Reinhard
  

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
@ 2003-01-02 21:01 lmonroy
  2003-01-03  7:17 ` Help Reinhard Karcher
  0 siblings, 1 reply; 278+ messages in thread
From: lmonroy @ 2003-01-02 21:01 UTC (permalink / raw)
  To: linux-msdos

Hi,

I have been make test with dosemu and samba to migrate workstations from
windows to linux, i have a little problem, i want to run a foxpro 2,6
application but in some cases appear a message  INSUFFICIENT DISK SPACE
but i have 3GB free disk space  on the server and my computer has 2gb
free too.

In other cases appear a message INSUFFICIENT MEMORY but i edit the
dosemu.conf and i was changed  the memory parameters, and the config.sys
to add more buffers, files.

Thank you so much for your help

Regards


Luis Alberto Monroy


_______________________________________________________________________
Te recomendamos:
Aventuras para los más pequeños en: http://www.terra.com.co/ninos/
Vive la pasión del fútbol en: http://www.terra.com.co/deportes/futbol/


-
To unsubscribe from this list: send the line "unsubscribe linux-msdos" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2002-12-25  7:31 Mailhebuau Christophe
  0 siblings, 0 replies; 278+ messages in thread
From: Mailhebuau Christophe @ 2002-12-25  7:31 UTC (permalink / raw)
  To: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

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

Hi,

I need help to patch my kernel 2.4.19 on my mandrake 9.0.

I've compiled my kernel with acpi support it's ok, but i don't have
directory :

/proc/acpi

my laptops is an inspiron 2650

can you help me to apply patch iasl ?
-- 
Cordialement,
Christophe Mailhebuau    http://www.justlinux.org
                           http://www.abul.org
GPG: 1024D/75B07F8D: BD18 2D01 D954 A339 E35B 9EA1 4240 0410 75B0 7F8D

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help...
  2002-12-18 15:23 Help manish
@ 2002-12-18 16:00 ` Maciej Soltysiak
  0 siblings, 0 replies; 278+ messages in thread
From: Maciej Soltysiak @ 2002-12-18 16:00 UTC (permalink / raw)
  To: manish; +Cc: netfilter

> >iptables -t nat -A PREROUTING -i ppp0 -j DNAT
>  --to-destination 192.168.101.3
>
> This time i am able to call people from outside from
> machine C (192.168.101.3)and also able to do voice
> conversation in vat. But another side A and D are not
> able to talk to that person outside the network. Also
This looks obvious, as all the traffic comming back to you
from the Internet you are directing to C. All, means,
initiated by host A or B too.

> 1) What should i do so A, C, and D all together can
>   use to call outside and able to do voice
> conversation
>   in vat or vive-versa?
You would need a nat_helper for that protocol, so the router
stores connection information and knows which packets should be
sent to whom.

You could try directing the traffic from that protocol to a
local broadcast address (specify the port of the service),
maybe the applications can manage to filter out their packets
somehow by ID's.

What chat protocol is that?

Regards,
Maciej Soltysiak



^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help...
@ 2002-12-18 15:23 manish
  2002-12-18 16:00 ` Help Maciej Soltysiak
  0 siblings, 1 reply; 278+ messages in thread
From: manish @ 2002-12-18 15:23 UTC (permalink / raw)
  To: netfilter

Hello 
Can any one look up to my problem. The problem is:
I have set up a small lan with both wired and wireless
clients, here i am describing only wired lan.

I am giving you the details, which will help you to
understand my problem.

    A----------B----------C
               |
               |
               |
               D

Here A is my windows client with IP address
        192.168.101.1 Mask 255.255.0.0
Here B is my Linux7.3 Server with IP address
        192.168.0.1 Mask 255.255.0.0
      B is also connected to Internet with Generic
        Serial Modem (ppp0).
Here C is my windows client with IP address
        192.168.101.3 Mask 255.255.0.0
Here D is my Linux client with IP address
        192.168.80.1 Mask 255.255.0.0.
I am sharing internet to all my client i.e A, C and D.
using this command.
>iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Turn on the IP forwarding
>echo 1 > /proc/sys/net/ipv4/ip_forward

Upto this everything works fine all clients (A, C, D)
share internets.
Now if i wanted to start any chat services i.e Yahoo
Messenger or vat tool the person who has logged on
from A not able to talk to person logged on from C or
D. or even a person who is also online from out of
this network (Somewhere from internet)also not able
to call or do voice chat.
# I had use this command after that
>iptables -t nat -A PREROUTING -i ppp0 -j DNAT
 --to-destination 192.168.101.3

This time i am able to call people from outside from
machine C (192.168.101.3)and also able to do voice
conversation in vat. But another side A and D are not
able to talk to that person outside the network. Also
the above command will not work for other hosts A and
D. At a time only one machine is able to make a vat
connection from B.

1) What should i do so A, C, and D all together can
  use to call outside and able to do voice
conversation
  in vat or vive-versa?
2) what should i do so A can talk to B in yahoo or vat
 voice chat?

please let me know that is there any solution for my
problem? Mostly i wanted to run vat?
Thanks
Manish.


__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com


^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help...
@ 2002-12-18 15:00 manish
  0 siblings, 0 replies; 278+ messages in thread
From: manish @ 2002-12-18 15:00 UTC (permalink / raw)
  To: netfilter

Hello 
Can any one look up to my problem. The problem is:
I have set up a small lan with both wired and wireless
clients, here i am describing only wired lan.

I am giving you the details, which will help you to
understand my problem.

    A----------B----------C
               |
               |
               |
               D

Here A is my windows client with IP address
        192.168.101.1 Mask 255.255.0.0
Here B is my Linux7.3 Server with IP address
        192.168.0.1 Mask 255.255.0.0
      B is also connected to Internet with Generic
        Serial Modem (ppp0).
Here C is my windows client with IP address
        192.168.101.3 Mask 255.255.0.0
Here D is my Linux client with IP address
        192.168.80.1 Mask 255.255.0.0.
I am sharing internet to all my client i.e A, C and D.
using this command.
>iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Turn on the IP forwarding
>echo 1 > /proc/sys/net/ipv4/ip_forward

Upto this everything works fine all clients (A, C, D)
share internets.
Now if i wanted to start any chat services i.e Yahoo
Messenger or vat tool the person who has logged on
from A not able to talk to person logged on from C or
D. or even a person who is also online from out of
this network (Somewhere from internet)also not able
to call or do voice chat.
# I had use this command after that
>iptables -t nat -A PREROUTING -i ppp0 -j DNAT
 --to-destination 192.168.101.3

This time i am able to call people from outside from
machine C (192.168.101.3)and also able to do voice
conversation in vat. But another side A and D are not
able to talk to that person outside the network. Also
the above command will not work for other hosts A and
D. At a time only one machine is able to make a vat
connection from B.

1) What should i do so A, C, and D all together can
  use to call outside and able to do voice
conversation
  in vat or vive-versa?
2) what should i do so A can talk to B in yahoo or vat
 voice chat?

please let me know that is there any solution for my
problem? Mostly i wanted to run vat?
Thanks
Manish.


__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com


^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help...
@ 2002-12-11 17:45 manish
  0 siblings, 0 replies; 278+ messages in thread
From: manish @ 2002-12-11 17:45 UTC (permalink / raw)
  To: netfilter

Hello 
Its really nice to see a detail information about NAT
in Linux 2.4 NAT HOWTO.It works well but i have a
small problem, i m not able to connect to voice from
my internal LAN to the internet. I am giving you the
details, which will help you to understand my problem.

   A----------B----------C
   	      |
	      |
	      |
	      D
  
Here A is my windows client with IP address
192.168.101.1 Mask 255.255.0.0
Here B is my Linux7.3 Server with IP address
192.168.0.1 Mask 255.255.0.0
B is also connected to Internet with Generic Serial
Modem (ppp0).
Here C is my windows client with IP address
192.168.101.3 Mask 255.255.0.0
Here D is my Linux client with IP address 192.168.80.1
Mask 255.255.0.0.
I am sharing internet to all my client i.e A, C and D.
using this command.

> iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Turn on the IP forwarding
  echo 1 > /proc/sys/net/ipv4/ip_forward

Upto this everything works fine all clients (A, C, D)
share internets.
Now if i wanted to start any chat services i.e Yahoo
Messenger or vat tool the person who has logged on
from A not able to use audio chat to person
logged on from C or D.
or even a person who is also online from out of this
network also not able to call or do voice chat.
# I had use this command after that
> iptables -t nat -A PREROUTING -i ppp0 -j DNAT
--to-destination 192.168.101.3
This time i am able to call people from outside from
machine C (192.168.101.3) and also able to do voice
conversation in vat. But another side A and D are not
able to talk to that person outside the network. Also
the above command will not for other hosts A and D. At
a time only one machine is able to make a vat
connection from B.

1) What should i do so A, C, and D all together can
use to call outside and able to do voice conversation
in vat?
2) what should i do so A can talk to B in yahoo or vat
voice chat?

please let me know that is there any solution for my
problem?
Thanks
Regards.

Manish.

__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com


^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2002-12-05 16:14 Dmitry V. Zhulanov
  0 siblings, 0 replies; 278+ messages in thread
From: Dmitry V. Zhulanov @ 2002-12-05 16:14 UTC (permalink / raw)
  To: linux-kernel

help


^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2002-12-05 15:17 Dmitry V. Zhulanov
  0 siblings, 0 replies; 278+ messages in thread
From: Dmitry V. Zhulanov @ 2002-12-05 15:17 UTC (permalink / raw)
  To: linux-sound

help



^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2002-11-18 13:24 Hyunjung Park
  0 siblings, 0 replies; 278+ messages in thread
From: Hyunjung Park @ 2002-11-18 13:24 UTC (permalink / raw)
  To: netdev



^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
       [not found] ` <E18D9IZ-0006nI-00-ek0oC1U1TqqnvZpeIfgr/KQD96bmaF075NbjCUgZEJk@public.gmane.org>
@ 2002-11-16 20:22   ` deepak singh
  0 siblings, 0 replies; 278+ messages in thread
From: deepak singh @ 2002-11-16 20:22 UTC (permalink / raw)
  To: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

 --- acpi-devel-request-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org wrote: >
Send Acpi-devel mailing list submissions to
> 	acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> 
> To subscribe or unsubscribe via the World Wide Web,
> visit
> 
>
https://lists.sourceforge.net/lists/listinfo/acpi-devel
> or, via email, send a message with subject or body
> 'help' to
> 	acpi-devel-request-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> 
> You can reach the person managing the list at
> 	acpi-devel-admin-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> 
> When replying, please edit your Subject line so it
> is more specific
> than "Re: Contents of Acpi-devel digest..."
> 
> 
> Today's Topics:
> 
>    1. (±¤°í)¡Ú²ÞÀº ÀÌ·ç¾îÁø´Ù!!! Á¤¸» ²Þ°°Àº
> â¾÷/ºÎ¾÷!!!¡Ú (â¾÷Áö¿ø¼¾ÅÍ)
>    2. Re: acpi-20021101, Dell inspiron 8100 report.
> (Ducrot Bruno)
>    3. Re: ACPI Battery status on Acer TravelMate
> a-550XV (Ducrot Bruno)
>    4. Re: Bios Override (Ducrot Bruno)
>    5. Sreen blanking [was Re: [ACPI] acpi-20021101,
> Dell inspiron 8100 report.] (Pavel Machek)
>    6. RE: Thread mutex errors / out of memory errors
> (Cagle, John (ISS-Houston))
>    7. ACPI error on 2.5.47-ac5 (alexh-rpjHciJLgqZBDgjK7y7TUQ@public.gmane.org)
>    8. Re: Sreen blanking [was Re: [ACPI]
> acpi-20021101, Dell inspiron 8100 report.] (Ducrot
> Bruno)
> 
> --__--__--
> 
> Message: 1
> Reply-To: admin-iXHEUVFznYH9W2o6/NvY6w@public.gmane.org
> From: â¾÷Áö¿ø¼¾ÅÍ <admin-iXHEUVFznYH9W2o6/NvY6w@public.gmane.org>
> To:  <acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>
> Date: Sat, 16 Nov 2002 09:28:04 +0900
> Subject: [ACPI] (±¤°í)¡Ú²ÞÀº ÀÌ·ç¾îÁø´Ù!!! Á¤¸»
> ²Þ°°Àº â¾÷/ºÎ¾÷!!!¡Ú
> 
> <html> 
> <head> 
> <meta http-equiv="content-type" content="text/html;
> charset=euc-kr"> 
> <title>(±¤°í)¡Ú¹«Á¡Æ÷,¼ÒÀÚº» â¾÷ÀÇ ±âȸ¸¦
> ÀâÀ¸¼¼¿ä!¡Ú</title> 
> <meta name="generator" content="Namo WebEditor
> v5.0"> 
> </head> 
> <body bgcolor="#e1eff6" text="black" link="blue"
> vlink="purple" alink="red"> 
> <table cellpadding="0" cellspacing="0" width="560"
> align="center"> 
> <tr> 
> <td width="947"> 
> <p><a href="http://www.sohomart4u.com"
> target="_blank"><img
>
src="http://www.sohomart4u.com/mail777/images/img01.jpg"
> border="0"></a></p> 
> </td> 
> </tr> 
> <tr> 
> <td width="947"> 
> <p><a href="http://www.sohomart4u.com"
> target="_blank"><img
>
src="http://www.sohomart4u.com/mail777/images/img02.jpg"
> width="560" height="98" border="0"></a></p> 
> </td> 
> </tr> 
> <tr> 
> <td width="947"> 
> <p><a href="http://www.sohomart4u.com"
> target="_blank"><img
>
src="http://www.sohomart4u.com/mail777/images/img03.jpg"
> width="560" height="111" border="0"></a></p> 
> </td> 
> </tr> 
> <tr> 
> <td width="947"> 
> <p><a href="http://www.sohomart4u.com"
> target="_blank"><img
>
src="http://www.sohomart4u.com/mail777/images/img04.jpg"
> width="560" height="121" border="0"></a></p> 
> </td> 
> </tr> 
> <tr> 
> <td width="947"> 
> <p><a href="http://www.sohomart4u.com"
> target="_blank"><img
>
src="http://www.sohomart4u.com/mail777/images/img05.jpg"
> width="560" height="116" border="0"></a></p> 
> </td> 
> </tr> 
> <tr> 
> <td width="947"> 
> <p><a href="http://www.sohomart4u.com"
> target="_blank"><img
>
src="http://www.sohomart4u.com/mail777/images/img06.jpg"
> width="560" height="108" border="0"></a></p> 
> </td> 
> </tr> 
> <tr> 
> <td width="947"> 
> <p><a href="http://www.sohomart4u.com"
> target="_blank"><img
>
src="http://www.sohomart4u.com/mail777/images/img07_1.gif"
> width="560" height="44" border="0"></a></p> 
> </td> 
> </tr> 
> <tr> 
> <td width="947" height="108"
>
background="http://www.sohomart4u.com/mail777/images/img08.gif">
> 
> <table align="center" cellpadding="0"
> cellspacing="0" width="533"> 
> <tr> 
> <td width="144"> 
> <p>&nbsp;</p> 
> </td> 
> <td width="133"> 
> <p><a
> href="http://www.sohomart4u.com/page/mailnew/mj.htm"
> target="_blank"><img
>
src="http://www.sohomart4u.com/mail777/images/b1.jpg"
> width="137" height="37" border="0"></a></p> 
> </td> 
> <td width="153"> 
> <p><a
>
href="http://www.sohomart4u.com/page/mailnew/ser1_1.htm"
> target="_blank"><img
>
src="http://www.sohomart4u.com/mail777/images/b2.jpg"
> width="137" height="37" border="0"></a></p> 
> </td> 
> <td width="103"> 
> <p>&nbsp;</p> 
> </td> 
> </tr> 
> <tr> 
> <td width="144"> 
> <p>&nbsp;</p> 
> </td> 
> <td width="133"> 
> <p><a
>
href="http://www.sohomart4u.com/page/mailnew/mj3.htm"
> target="_blank"><img
>
src="http://www.sohomart4u.com/mail777/images/b3.jpg"
> width="137" height="37" border="0"></a></p> 
> </td> 
> <td width="153"> 
> <p><a href="http://www.sohonuri.com"
> target="_blank"><img
>
src="http://www.sohomart4u.com/mail777/images/b4.jpg"
> width="137" height="37" border="0"></a></p> 
> </td> 
> <td width="103"> 
> <p>&nbsp;</p> 
> </td> 
> </tr> 
> </table> 
> </td> 
> </tr> 
> <tr> 
> <td width="947" bgcolor="#c4dffa"> 
> <p align="center"><b><font size="2">:: &nbsp;¿¬¶ôó
> ¾È³» &nbsp;::&nbsp;</font></b></p> 
> </td> 
> </tr> 
> <tr> 
> <td width="947" bgcolor="white"> 
> <p><br><FONT size=2>ÁÖ¼Ò : ¼­¿ïƯº°½Ã ¼­Ãʱ¸ ¼­ÃÊ2µ¿
> 1337-8 º¸Åëºôµù 
> 405È£<br>´ã´ç : ÁÖ¼¼ÈÆ<br>TEL :
> 080-224-5500<br>»çÀÌÆ® : <a
> href="http://www.sohomart4u.com"
>
target="_blank">http://www.sohomart4u.com</a><br>&nbsp;</FONT></p>
> 
> </td> 
> </tr> 
> <tr> 
> <td width="947" bgcolor="#c4dffa"> 
> <P align="center"><b><font size="2">::
> &nbsp;±¤°í¾È³» &nbsp;::</font></b></P> 
> </td> 
> </tr> 
> <tr> 
> <td width="947" bgcolor="white"> 
> <p><FONT size=2><br><IMG height=9 alt=dia_bluve.gif 
>
src="http://www.sohomart4u.com/newmarketing/img/dec1.gif"
> width=30 border=0>¿øÄ¡¾Ê´Â 
> Á¤º¸¿´´Ù¸é ¸Ó¸®¼÷¿© »ç°úÀÇ ¸»¾¸À» ¿Ã¸³´Ï´Ù.<BR><IMG
> height=9 alt=dia_bluve.gif 
>
src="http://www.sohomart4u.com/newmarketing/img/dec1.gif"
> width=30 border=0>º»¸ÞÀÏÀº 
> ¹ß½ÅÀü¿ë ¸ÞÀÏÀÔ´Ï´Ù.<BR><IMG height=9
> alt=dia_bluve.gif 
=== message truncated === 

__________________________________________________
Do You Yahoo!?
Everything you'll ever need on one web page
from News and Sport to Email and Music Charts
http://uk.my.yahoo.com


-------------------------------------------------------
This sf.net email is sponsored by: To learn the basics of securing 
your web site with SSL, click here to get a FREE TRIAL of a Thawte 
Server Certificate: http://www.gothawte.com/rd524.html

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
       [not found] <F392BE64738A7143B00E86A5634FBF142C85@akun2900.intra.savi.ch>
@ 2002-10-31  8:50 ` Antony Stone
  0 siblings, 0 replies; 278+ messages in thread
From: Antony Stone @ 2002-10-31  8:50 UTC (permalink / raw)
  To: Netfilter Mailing List

On Thursday 31 October 2002 8:27 am, Renato Rossi wrote:

> Hi Antony
> I'm sorry for my accademical English!
> I've a lot of problem with DNAT,
> I've web server (192.168.2.1/24) behind a dual homed firewall ($EXT=eth0
> $EXT_IP=A.B.C.D $INT=eth1 $INT_IP= 192.168.2.252)
> I set up DNAT roule and I can see packets with iptables -L -v -t nat, but
> no pakets wolk my internal lan (I use ethereal)
> I modify my rule to view if I can telnet web server in port 80 and all is
> ok SNAT work fine
>
> # SNAT
> $FW -t nat -A POSTROUTING -o $EXT -s $INT_NET -j SNAT --to-source $EXT_IP
>
> # DNAT
> $FW -t nat -A PREROUTING -p tcp -i $EXT --dport 80 -j DNAT --to-destination
> 192.168.2.1
>
> # FORWARD
> $FW -A FORWARD -i $EXT -p tcp --dport 80 -d 192.168.2.1 -j ACCEPT
> $FW -A FORWARD -o $EXT -p tcp --dport 80 -s 192.168.2.1 -j ACCEPT
>
> How can I resolv it??

There's no problem with the rules above.

Are you sure your ISP is allowing incoming connections on TCP port 80 ?

Try putting a LOG rule into your PREROUTING chain to log TCP port 80 packets 
and see if anything seems to be coming in to the firewall at all.

Antony.

-- 

The difference between theory and practice is that
in theory there is no difference, whereas in practice there is.


^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: help
  2002-10-11 10:38 help Nataraj
@ 2002-10-14  4:02 ` ashutosh.varshney
  0 siblings, 0 replies; 278+ messages in thread
From: ashutosh.varshney @ 2002-10-14  4:02 UTC (permalink / raw)
  To: ample; +Cc: nfs

Use NFS over TCP and set rsize,wsize = 32K .It will definitely resolve ur
problem.

rgds
ashu


-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
@ 2002-10-11 10:38 Nataraj
  2002-10-14  4:02 ` help ashutosh.varshney
  0 siblings, 1 reply; 278+ messages in thread
From: Nataraj @ 2002-10-11 10:38 UTC (permalink / raw)
  To: nfs

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

Hi,

I have Redhat linux 7.2 and NFS V3 working on it. it puts too much load on network which slows down all network operations.
Also I am running NFS on Solaris 7. I just want to know the who is cause the problem.

both side NFS working on UDP.

  a.. the version of nfs-utils Iam  are using (nfs-utils-0.3.1-13.7.2.1)

  b.. the version of the kernel and any non-stock applied kernels. is (2.4.7-10)

  c.. the distribution of linux you are using (REDHAT )

  d.. the version(s) of other operating systems involved. ( Linux 7.2)

It is also useful to know the networking configuration connecting the hosts ( cat 5 with 10/100 switch network).

Linux NFS server.


  a.. the output of rpcinfo -p localhost run on the server out put is 

program vers proto   port
100000    2   tcp    111  portmapper
100000    2   udp    111  portmapper
100024    1   udp  32768  status
100024    1   tcp  32768  status
100004    2   udp    624  ypserv
100004    1   udp    624  ypserv
100004    2   tcp    627  ypserv
100004    1   tcp    627  ypserv
100007    2   udp    644  ypbind
100007    1   udp    644  ypbind
100007    2   tcp    647  ypbind
100007    1   tcp    647  ypbind
100003    2   udp   2049  nfs
100003    3   udp   2049  nfs
100021    1   udp  32771  nlockmgr
100021    3   udp  32771  nlockmgr
100021    4   udp  32771  nlockmgr
100009    1   udp    830  yppasswdd
100011    1   udp    685  rquotad
100011    2   udp    685  rquotad
100011    1   tcp    688  rquotad
100011    2   tcp    688  rquotad
100005    1   udp  32774  mountd
100005    1   tcp  32770  mountd
100005    2   udp  32774  mountd
100005    2   tcp  32770  mountd
100005    3   udp  32774  mountd
100005    3   tcp  32770  mountd



for Solaris is

  a.. the output of rpcinfo -p localhost out put is

program vers proto   port
100000    4   tcp    111  portmapper
100000    3   tcp    111  portmapper
100000    2   tcp    111  portmapper
100000    4   udp    111  portmapper
100000    3   udp    111  portmapper
100000    2   udp    111  portmapper
100004    2   udp    728  ypserv
100004    1   udp    728  ypserv
100004    1   tcp    729  ypserv
100004    2   tcp  32771  ypserv
1073741824    2   udp  32772
100007    3   udp  32778  ypbind
100007    2   udp  32778  ypbind
100007    1   udp  32778  ypbind
100007    3   tcp  32772  ypbind
100007    2   tcp  32772  ypbind
100007    1   tcp  32772  ypbind
100024    1   udp  32783  status
100024    1   tcp  32773  status
100133    1   udp  32783
100133    1   tcp  32773
100021    1   udp   4045  nlockmgr
100021    2   udp   4045  nlockmgr
100021    3   udp   4045  nlockmgr
100021    4   udp   4045  nlockmgr
100232   10   udp  32785  sadmind
100011    1   udp  32786  rquotad
100002    2   udp  32787  rusersd
100002    3   udp  32787  rusersd
100002    2   tcp  32774  rusersd
100002    3   tcp  32774  rusersd
100012    1   udp  32788  sprayd
100008    1   udp  32789  walld
100001    2   udp  32790  rstatd
100001    3   udp  32790  rstatd
100001    4   udp  32790  rstatd
100083    1   tcp  32775
100221    1   tcp  32776
100235    1   tcp  32777
100068    2   udp  32791
100068    3   udp  32791
100068    4   udp  32791
100068    5   udp  32791
300326    4   tcp  32778
100021    1   tcp   4045  nlockmgr
100021    2   tcp   4045  nlockmgr
100021    3   tcp   4045  nlockmgr
100021    4   tcp   4045  nlockmgr
100005    1   udp  32803  mountd
100005    2   udp  32803  mountd
100005    3   udp  32803  mountd
100005    1   tcp  32779  mountd
100005    2   tcp  32779  mountd
100005    3   tcp  32779  mountd
100003    2   udp   2049  nfs
100003    3   udp   2049  nfs
100227    2   udp   2049  nfs_acl
100227    3   udp   2049  nfs_acl
100003    2   tcp   2049  nfs
100003    3   tcp   2049  nfs
100227    2   tcp   2049  nfs_acl
100227    3   tcp   2049  nfs_acl
300598    1   udp  32805
300598    1   tcp  32781
805306368    1   udp  32805
805306368    1   tcp  32781
100249    1   udp  32807
100249    1   tcp  32782
1289637087    4   tcp  32859
1289637087    1   tcp  32859
1289637087    3   tcp  32859
1289637087    2   tcp  32859
1289637086    4   tcp  35213
1289637086    1   tcp  35213
1289637086    3   tcp  35213
1289637086    2   tcp  35213

Help on this will be greatful

Thanks 

Yukthi




[-- Attachment #2: Type: text/html, Size: 9923 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: Help
  2001-11-19 20:48 Help dave
@ 2001-11-20 13:19 ` David Woodhouse
  0 siblings, 0 replies; 278+ messages in thread
From: David Woodhouse @ 2001-11-20 13:19 UTC (permalink / raw)
  To: dave; +Cc: linux-mtd

david.harris18@virgin.net said:
>  I have a DOC1000 with all the right patches to 2.4.9. And the erase
> ioctl returns this.

> I can read from it using dd. But writes fail with similar results.

The DiskOnChip 1000 driver hasn't been looked at for some time, because I 
don't have one - it's been out of production for years now, I believe. 

It should be turned into a 'map' driver and use the generic flash chip 
drivers, rather than having its own standalone driver. Look at the paging 
setup in something like drivers/mtd/maps/vmax301.c for inspiration.

--
dwmw2

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Help
@ 2001-11-19 20:48 dave
  2001-11-20 13:19 ` Help David Woodhouse
  0 siblings, 1 reply; 278+ messages in thread
From: dave @ 2001-11-19 20:48 UTC (permalink / raw)
  To: linux-mtd

Does the following error message mean anything to anyone?
(I don't belong to this mailing list as yet so please reply direct)

flashcard: erase failed, status 0xffff
and then I have to reboot

I have a DOC1000 with all the right patches to 2.4.9.
And the erase ioctl returns this.

I can read from it using dd.
But writes fail with similar results.

^ permalink raw reply	[flat|nested] 278+ messages in thread

* help
  2003-02-22  8:55 YAMON Harald Koerfgen
@ 2001-08-14  5:54 ` Sathish Vasudevaiah
  0 siblings, 0 replies; 278+ messages in thread
From: Sathish Vasudevaiah @ 2001-08-14  5:54 UTC (permalink / raw)
  To: linux-mips

 

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: HELP
  2001-06-07  9:44   ` HELP David Woodhouse
  2001-06-07  9:47     ` HELP Abraham vd Merwe
  2001-06-07 17:21     ` HELP Russ Dill
@ 2001-06-07 20:01     ` David Woodhouse
  2 siblings, 0 replies; 278+ messages in thread
From: David Woodhouse @ 2001-06-07 20:01 UTC (permalink / raw)
  To: Russ Dill; +Cc: MTD for Linux

Russ.Dill@asu.edu said:
> . However, some drivers *cough*jffs2*cough* will make unaligned reads
> from time to time, but only rarely. In this case, the handler speeds
> things up by doing the access, instead of producing an oops. 

Actually JFFS2 does it quite a lot. I added a byte to the dirent structure 
which means the names get unaligned.

--
dwmw2

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: HELP
  2001-06-07  9:44   ` HELP David Woodhouse
  2001-06-07  9:47     ` HELP Abraham vd Merwe
@ 2001-06-07 17:21     ` Russ Dill
  2001-06-07 20:01     ` HELP David Woodhouse
  2 siblings, 0 replies; 278+ messages in thread
From: Russ Dill @ 2001-06-07 17:21 UTC (permalink / raw)
  To: MTD for Linux

On 07 Jun 2001 10:44:12 +0100, David Woodhouse wrote:
> 
> abraham@2d3d.co.za said:
> >  why is this necessary though? The kernel docs make it pretty clear
> > that enabling that causes severe performance penalties which I wanted
> > to avoid. 
> 
> Then fix the kernel docs. :)

I already tried feeding rmk such a patch. The unaligned handly only
impacts performance when there is an unaligned read. So for you, its
good you now know and are working around this. However, some drivers
*cough*jffs2*cough* will make unaligned reads from time to time, but
only rarely. In this case, the handler speeds things up by doing the
access, instead of producing an oops.

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: HELP
  2001-06-07  9:43   ` HELP Abraham vd Merwe
@ 2001-06-07 14:30     ` Nicolas Pitre
  0 siblings, 0 replies; 278+ messages in thread
From: Nicolas Pitre @ 2001-06-07 14:30 UTC (permalink / raw)
  To: Abraham vd Merwe; +Cc: David Woodhouse, MTD for Linux


On Thu, 7 Jun 2001, Abraham vd Merwe wrote:

> Hi David!
>
> > abraham@2d3d.co.za said:
> > > mtd_debug: Unaligned memory access at pc=0xca005644, lr=0xc001dc08
> > > (bad address=0xc0135d82, cod) Internal error: alignment exception: 0
> >
> > Enable CONFIG_ALIGNMENT_TRAP.
> >
> > 2.4.4-rmk1 or later will force you to do this before you can enable
> > CONFIG_MTD.
>
> why is this necessary though? The kernel docs make it pretty clear that
> enabling that causes severe performance penalties which I wanted to avoid.

More precisely, _relying_ on it for unaligned access _only_ causes severe
performance penalties.  If you know in advance at compile time that you're
going to make unaligned access to memory then just wrap those with the
get_unaligned()/put_unaligned() macros.  The alignment trap will emulate
unaligned access at run time, with a performance penalty of course, but
still it will work for the rare and unpredictable cases where it might
happen.


Nicolas

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: HELP
  2001-06-07  9:35 ` HELP David Woodhouse
                     ` (2 preceding siblings ...)
  2001-06-07  9:48   ` HELP David Woodhouse
@ 2001-06-07 14:23   ` Nicolas Pitre
  3 siblings, 0 replies; 278+ messages in thread
From: Nicolas Pitre @ 2001-06-07 14:23 UTC (permalink / raw)
  To: David Woodhouse; +Cc: Abraham vd Merwe, MTD for Linux


On Thu, 7 Jun 2001, David Woodhouse wrote:

>
> abraham@2d3d.co.za said:
> > mtd_debug: Unaligned memory access at pc=0xca005644, lr=0xc001dc08
> > (bad address=0xc0135d82, cod) Internal error: alignment exception: 0
>
> Enable CONFIG_ALIGNMENT_TRAP.
>
> 2.4.4-rmk1 or later will force you to do this before you can enable
> CONFIG_MTD.

2.4.5-rmk*-np* and later kernels unconditionally enable
CONFIG_ALIGNMENT_TRAP for SA1100 architectures without asking you.


Nicolas

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: HELP
  2001-06-07  9:48   ` HELP David Woodhouse
  2001-06-07  9:51     ` HELP Abraham vd Merwe
@ 2001-06-07 10:16     ` David Woodhouse
  1 sibling, 0 replies; 278+ messages in thread
From: David Woodhouse @ 2001-06-07 10:16 UTC (permalink / raw)
  To: Abraham vd Merwe; +Cc: MTD for Linux


abraham@2d3d.co.za said:
> 
> I think that might actually have been on the ipaq list. 
> that helps :P 

http://www.handhelds.org/pipermail/ipaq/2001-March/004805.html

--
dwmw2

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: HELP
  2001-06-07  9:48   ` HELP David Woodhouse
@ 2001-06-07  9:51     ` Abraham vd Merwe
  2001-06-07 10:16     ` HELP David Woodhouse
  1 sibling, 0 replies; 278+ messages in thread
From: Abraham vd Merwe @ 2001-06-07  9:51 UTC (permalink / raw)
  To: David Woodhouse; +Cc: MTD for Linux

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

Hi David!

> Seriously, though - if you're doing a driver which is only going to be used
> on ARM hardware you may consider using get_unaligned(). Do read the archives
> from when we did this for the CFI drivers and subsequently took it out again
> though.

why did you take it out?

> I think that might actually have been on the ipaq list. 

that helps :P

-- 

Regards
 Abraham

Don't vote -- it only encourages them!

__________________________________________________________
 Abraham vd Merwe - 2d3D, Inc.

 Device Driver Development, Outsourcing, Embedded Systems

  Cell: +27 82 565 4451         Snailmail:
   Tel: +27 21 761 7549            Block C, Antree Park
   Fax: +27 21 761 7648            Doncaster Road
 Email: abraham@2d3d.co.za         Kenilworth, 7700
  Http: http://www.2d3d.com        South Africa


[-- Attachment #2: Type: application/pgp-signature, Size: 232 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: HELP
  2001-06-07  9:35 ` HELP David Woodhouse
  2001-06-07  9:43   ` HELP Abraham vd Merwe
  2001-06-07  9:44   ` HELP David Woodhouse
@ 2001-06-07  9:48   ` David Woodhouse
  2001-06-07  9:51     ` HELP Abraham vd Merwe
  2001-06-07 10:16     ` HELP David Woodhouse
  2001-06-07 14:23   ` HELP Nicolas Pitre
  3 siblings, 2 replies; 278+ messages in thread
From: David Woodhouse @ 2001-06-07  9:48 UTC (permalink / raw)
  To: Abraham vd Merwe, MTD for Linux

Seriously, though - if you're doing a driver which is only going to be used
on ARM hardware you may consider using get_unaligned(). Do read the archives
from when we did this for the CFI drivers and subsequently took it out again
though.

I think that might actually have been on the ipaq list. 

--
dwmw2

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: HELP
  2001-06-07  9:44   ` HELP David Woodhouse
@ 2001-06-07  9:47     ` Abraham vd Merwe
  2001-06-07 17:21     ` HELP Russ Dill
  2001-06-07 20:01     ` HELP David Woodhouse
  2 siblings, 0 replies; 278+ messages in thread
From: Abraham vd Merwe @ 2001-06-07  9:47 UTC (permalink / raw)
  To: David Woodhouse; +Cc: MTD for Linux

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

Hi David!

> abraham@2d3d.co.za said:
> >  why is this necessary though? The kernel docs make it pretty clear
> > that enabling that causes severe performance penalties which I wanted
> > to avoid. 
> 
> Then fix the kernel docs. :)

Hiehiehie.

-- 

Regards
 Abraham

Power corrupts.  And atomic power corrupts atomically.

__________________________________________________________
 Abraham vd Merwe - 2d3D, Inc.

 Device Driver Development, Outsourcing, Embedded Systems

  Cell: +27 82 565 4451         Snailmail:
   Tel: +27 21 761 7549            Block C, Antree Park
   Fax: +27 21 761 7648            Doncaster Road
 Email: abraham@2d3d.co.za         Kenilworth, 7700
  Http: http://www.2d3d.com        South Africa


[-- Attachment #2: Type: application/pgp-signature, Size: 232 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: HELP
  2001-06-07  9:35 ` HELP David Woodhouse
  2001-06-07  9:43   ` HELP Abraham vd Merwe
@ 2001-06-07  9:44   ` David Woodhouse
  2001-06-07  9:47     ` HELP Abraham vd Merwe
                       ` (2 more replies)
  2001-06-07  9:48   ` HELP David Woodhouse
  2001-06-07 14:23   ` HELP Nicolas Pitre
  3 siblings, 3 replies; 278+ messages in thread
From: David Woodhouse @ 2001-06-07  9:44 UTC (permalink / raw)
  To: Abraham vd Merwe; +Cc: MTD for Linux

abraham@2d3d.co.za said:
>  why is this necessary though? The kernel docs make it pretty clear
> that enabling that causes severe performance penalties which I wanted
> to avoid. 

Then fix the kernel docs. :)

--
dwmw2

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: HELP
  2001-06-07  9:35 ` HELP David Woodhouse
@ 2001-06-07  9:43   ` Abraham vd Merwe
  2001-06-07 14:30     ` HELP Nicolas Pitre
  2001-06-07  9:44   ` HELP David Woodhouse
                     ` (2 subsequent siblings)
  3 siblings, 1 reply; 278+ messages in thread
From: Abraham vd Merwe @ 2001-06-07  9:43 UTC (permalink / raw)
  To: David Woodhouse; +Cc: MTD for Linux

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

Hi David!

> abraham@2d3d.co.za said:
> > mtd_debug: Unaligned memory access at pc=0xca005644, lr=0xc001dc08
> > (bad address=0xc0135d82, cod) Internal error: alignment exception: 0
> 
> Enable CONFIG_ALIGNMENT_TRAP.
> 
> 2.4.4-rmk1 or later will force you to do this before you can enable
> CONFIG_MTD.

why is this necessary though? The kernel docs make it pretty clear that
enabling that causes severe performance penalties which I wanted to avoid.

-- 

Regards
 Abraham

Everybody is somebody else's weirdo.
		-- Dykstra

__________________________________________________________
 Abraham vd Merwe - 2d3D, Inc.

 Device Driver Development, Outsourcing, Embedded Systems

  Cell: +27 82 565 4451         Snailmail:
   Tel: +27 21 761 7549            Block C, Antree Park
   Fax: +27 21 761 7648            Doncaster Road
 Email: abraham@2d3d.co.za         Kenilworth, 7700
  Http: http://www.2d3d.com        South Africa


[-- Attachment #2: Type: application/pgp-signature, Size: 232 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

* Re: HELP
  2001-06-07  9:04 HELP Abraham vd Merwe
@ 2001-06-07  9:35 ` David Woodhouse
  2001-06-07  9:43   ` HELP Abraham vd Merwe
                     ` (3 more replies)
  0 siblings, 4 replies; 278+ messages in thread
From: David Woodhouse @ 2001-06-07  9:35 UTC (permalink / raw)
  To: Abraham vd Merwe; +Cc: MTD for Linux

abraham@2d3d.co.za said:
> mtd_debug: Unaligned memory access at pc=0xca005644, lr=0xc001dc08
> (bad address=0xc0135d82, cod) Internal error: alignment exception: 0

Enable CONFIG_ALIGNMENT_TRAP.

2.4.4-rmk1 or later will force you to do this before you can enable
CONFIG_MTD.

--
dwmw2

^ permalink raw reply	[flat|nested] 278+ messages in thread

* HELP
@ 2001-06-07  9:04 Abraham vd Merwe
  2001-06-07  9:35 ` HELP David Woodhouse
  0 siblings, 1 reply; 278+ messages in thread
From: Abraham vd Merwe @ 2001-06-07  9:04 UTC (permalink / raw)
  To: MTD for Linux

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

Hi!

I'm busy debugging my chip driver for 28Fxx... chips in LART and I got this
problem with one of my tests:

------------< snip <------< snip <------< snip <------------
root@tinystor:~# ./mtd_debug write 2 6 /dev/zero
MTD_open
MTD_write
flash_write(to = 0x00000002, len = 6)
write_dword(): 0x00000000 <- 0x0000ffff
mtd_debug: Unaligned memory access at pc=0xca005644, lr=0xc001dc08 (bad
address=0xc0135d82, cod)
Internal error: alignment exception: 0
CPU: 0
pc : [<ca005644>]    lr : [<c001dc08>]
sp : c9635f10  ip : c9635f54  fp : c9635f44
r10: c0135d82  r9 : 00000000  r8 : 00000004
r7 : c0135d82  r6 : 00000002  r5 : 00000004  r4 : 00000000
r3 : 00000002  r2 : 00000004  r1 : ca005adc  r0 : ca005ac0
Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  Segment user
Control: C075117F  Table: C075117F  DAC: 00000015
Process mtd_debug (pid: 273, stackpage=c9635000)
Code: e59f10c0 e1a02008 (e49a3004) e2455004 eb00020f
Stack:
c9635f00: c001dc08 ca005644 20000013 ffffffff  00000002 00000000 0000ffff
00000006
c9635f20: c0135d80 00000000 00000006 c00116e0  c011bec0 0200d800 c9635f80
c9635f48
c9635f40: ca002648 ca0054b0 c9635f54 c0135d80  00000000 00000002 c00116c0
ffffffea
c9635f60: 00000000 00000006 0200d800 00000004  bfffff30 c9635fac c9635f84
c003f48c
c9635f80: ca0024e4 c00180bc c003ee5c 0200d800  0200d810 20000010 00000002
c0012804
c9635fa0: 00000000 c9635fb0 c0012680 c003f3bc  0200d800 c0018690 00000003
0200d800
c9635fc0: 00000006 ffffffff 0200d800 0200d810  00000006 00000002 00000003
400fe248
c9635fe0: bfffff30 bffffdcc 400abaa0 bffffda8  02000b48 400abaa4 20000010
00000003
Backtrace:
Function entered at [<ca0054a4>] from [<ca002648>]
Function entered at [<ca0024d8>] from [<c003f48c>]
Function entered at [<c003f3b0>] from [<c0012680>]
 r8 = C0012804  r7 = 00000002  r6 = 20000010  r5 = 0200D810
 r4 = 0200D800
Segmentation fault
root@tinystor:~#
------------< snip <------< snip <------< snip <------------

All that the test program in this case is doing is writing 6 bytes starting
at offset 2 in /dev/mtd0 to /dev/mtd0 (damn, this sounds confusing). Here is
the test procedure:

------------< snip <------< snip <------< snip <------------
void file_to_flash (int fd,u_int32_t offset,u_int32_t len,const char
*filename)
{
   u_int8_t *buf;
   FILE *fp;
   int err;
   if (offset != lseek (fd,offset,SEEK_SET))
     {
        perror ("lseek()");
        return;
     }
   if ((buf = (u_int8_t *) malloc (len * sizeof (u_int8_t))) == NULL)
     {
        perror ("malloc()");
        return;
     }
   if ((fp = fopen (filename,"r")) == NULL)
     {
        perror ("fopen()");
        free (buf);
        return;
     }
   if (fread (buf,len,1,fp) != 1 || ferror (fp))
     {
        perror ("fread()");
        free (buf);
        fclose (fp);
        return;
     }
   err = write (fd,buf,len);
   if (err < 0)
     {
        perror ("write()");
        free (buf);
        fclose (fp);
        return;
     }
   free (buf);
   fclose (fp);
   printf ("Copied %d bytes from %s to address 0x%.8x in
flash\n",len,filename,offset);
}
------------< snip <------< snip <------< snip <------------

Above function is called with an open file descriptor to /dev/mtd0, offset =
2, len = 6, and the source file is /dev/zero

As you can see from the fault that occurred, above function obviously
reached the write(), so I doubt there's anything wrong with the function
above (after I can't see anything that might be unaligned in there)

Now the chip driver which is used by /dev/mtd0 is a dummy driver which fakes
the write and just shows you what it would do (hence the write_dword():
0x00000000 <- 0x0000ffff)

Below is the relevant module code:

------------< snip <------< snip <------< snip <------------
static int flash_write (struct mtd_info *mtd,loff_t to,size_t len,size_t
*retlen,const u_char *buf)
{
   __u8 tmp[4];
   int i,n;

#ifdef LART_DEBUG
   printk (KERN_DEBUG "%s(to = 0x%.8x, len = %d)\n",__FUNCTION__,(__u32)
to,len);
#endif

   *retlen = 0;

   /* sanity checks */
   if (!len) return (0);
   if (to + len > mtd->size) return (-EINVAL);

   /* first, we write a 0xFF.... padded byte until we reach a dword boundary
*/
   if (to & (BUSWIDTH - 1))
     {
        __u32 aligned = to & ~(BUSWIDTH - 1);
        int gap = to - aligned;

        i = n = 0;

        while (gap--) tmp[i++] = 0xFF;
        while (len && i < BUSWIDTH) tmp[i++] = buf[n++], len--;
        while (i < BUSWIDTH) tmp[i++] = 0xFF;

        if (!write_dword (aligned,*((__u32 *) tmp))) return (-EIO);

        to += n;
        buf += n;
        *retlen += n;
     }

   /* now we write dwords until we reach a non-dword boundary */
   while (len >= BUSWIDTH)
     {
        if (!write_dword (to,*((__u32 *) buf))) return (-EIO);

        to += BUSWIDTH;
        buf += BUSWIDTH;
        *retlen += BUSWIDTH;
        len -= BUSWIDTH;
     }

   /* top up the last unaligned bytes, padded with 0xFF.... */
   if (len & (BUSWIDTH - 1))
     {
        i = n = 0;

        while (len--) tmp[i++] = buf[n++];
        while (i < BUSWIDTH) tmp[i++] = 0xFF;

        if (!write_dword (to,*((__u32 *) tmp))) return (-EIO);

        *retlen += n;
     }

   return (0);
}

static inline int write_dword (__u32 offset,__u32 x)
{
#ifndef LART_DEBUG
   __u32 status;

   /* setup writing */
   write32 (data_to_flash (PGM_SETUP),offset);

   /* write the data */
   write32 (x,offset);

   /* wait for the write to finish */
   do
     {
        write32 (data_to_flash (STATUS_READ),offset);
        status = flash_to_data (read32 (offset));
     }
   while ((~status & STATUS_BUSY) != 0);

   /* put the flash back into command mode */
   write32 (data_to_flash (READ_ARRAY),offset);

   /* was the write successfull? */
   if ((status & STATUS_PGM_ERR) || read32 (x) != x)
     {
        printk (KERN_WARNING "%s: write error at address
0x%.8x.\n",module_name,offset);
        return (0);
     }
#else
   printk (KERN_DEBUG "%s(): 0x%.8x <- 0x%.8x\n",__FUNCTION__,offset,x);
#endif

   return (1);
}
------------< snip <------< snip <------< snip <------------

LART_DEBUG is of course defined. As you can see from the output, the first
if() was executed successfully and then it crashed in the while loop (at
offset 2, there's a padded word and a dword that needs to be written. The
dword get's caught be the while loop).

What I don't get is why I get an "Unaligned memory access" since all the
data I'm using should be aligned correctly by the compiler. Also a similar
test that tests the dword while loop works perfectly:

------------< snip <------< snip <------< snip <------------
root@tinystor:~# ./mtd_debug write 4 6 /dev/zero
MTD_open
MTD_write
flash_write(to = 0x00000004, len = 6)
write_dword(): 0x00000004 <- 0x00000000
write_dword(): 0x00000008 <- 0xffff0000
Copied 6 MTD_close
bytes from /dev/zero to address 0x00000004 in flash
root@tinystor:~#
------------< snip <------< snip <------< snip <------------

Any help would really be appreciated.

-- 

Regards
 Abraham

Love is never asking why?

__________________________________________________________
 Abraham vd Merwe - 2d3D, Inc.

 Device Driver Development, Outsourcing, Embedded Systems

  Cell: +27 82 565 4451         Snailmail:
   Tel: +27 21 761 7549            Block C, Antree Park
   Fax: +27 21 761 7648            Doncaster Road
 Email: abraham@2d3d.co.za         Kenilworth, 7700
  Http: http://www.2d3d.com        South Africa


[-- Attachment #2: Type: application/pgp-signature, Size: 232 bytes --]

^ permalink raw reply	[flat|nested] 278+ messages in thread

end of thread, other threads:[~2023-06-12  9:53 UTC | newest]

Thread overview: 278+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-06  5:26 help John Klug
  -- strict thread matches above, loose matches on Subject: below --
2023-06-12  9:33 help stanzgy
2023-06-12  9:36 ` help stanzgy
2022-11-29 21:01 help hinxx
2022-11-15  4:35 Help jovial umwari
2022-11-15 13:59 ` Help Julia Lawall
2022-06-16  5:26 help Andreas Radke
2022-06-03 23:04 help Thomas Green
2022-02-25  0:04 Help 张健
2020-11-28 14:32 help Rroach
2020-09-16 16:33 help Dan Jakubiec
2020-04-07  5:06 help number201724
2020-03-24 10:13 Help Chained Up
2020-03-25 15:34 ` Help Philippe Mathieu-Daudé
2020-03-21 19:26 help don fisher
2020-02-07  5:26 help Frank Esposito
2020-01-17 19:31 help Fairouz Fakhfakh
     [not found] <20191121140040.GB9271.ref@pc1lin.fred.org>
2019-11-21 14:00 ` help Fred
2019-03-14  6:39 help Yubin
2018-11-21 13:32 help _
2018-10-17  8:33 help Lorenzo Chelini
2018-10-17  9:28 ` help Madhavan Srinivasan
2018-08-07 13:01 help Marcel J.E. Mol
2018-05-06 19:28 help Richard Lee
2018-01-06 16:44 Help Farouk Maâboudallah
2018-01-06 22:40 ` Help Ozgur
2018-01-07  0:56 ` Help Tobin C. Harding
2018-01-07  1:39 ` Help valdis.kletnieks at vt.edu
2017-09-28  1:21 Help Nityananda
2017-09-28  3:06 ` Help Christian Couder
2017-05-17 14:26 help James Okken
     [not found] <mailman.63189.1489153806.15860.yocto@yoctoproject.org>
2017-03-10 14:25 ` help Suneetha Lakshmi G
2017-03-10 14:28   ` help Robert P. J. Day
2017-03-10 14:39   ` help Schmitt, Richard
2017-03-10 18:15   ` help Khem Raj
2017-03-13  4:28     ` help Suneetha Lakshmi G
2017-01-28 16:59 help Micah Crochet
2017-01-17 17:35 help Jay Miller
2016-08-19 13:11 help jayachandran.subramanian
2016-08-19 18:09 ` help Stephen Hemminger
2016-08-19 18:36   ` help Wiles, Keith
2016-08-20  0:26 ` help harshavardhan Reddy
2016-05-13  7:25 help Chandrakanth Sherkhane (IC Nexus)
2016-05-13  7:34 ` help Chris Z.
2016-05-13  9:26 ` help Burton, Ross
2016-05-13  9:30   ` help Herman van Hazendonk
2016-03-23 10:23 help Marwa Hamza
2016-03-10 20:04 help Safa Hamza
2016-03-11 14:49 ` help Konrad Rzeszutek Wilk
     [not found]   ` <CAFwQ9hH6_7v57sw9c96GG=B9FdqFGn4WnDYO3RU5sLxEKQX7gg@mail.gmail.com>
     [not found]     ` <20160311152001.GJ5133@char.us.oracle.com>
2016-03-11 15:20       ` help Konrad Rzeszutek Wilk
     [not found]         ` <CAFwQ9hE_erNA4uCCpdKwWRdZXRF39YJ=mqo6dbOpeWkNdipyTA@mail.gmail.com>
2016-03-11 16:02           ` help Konrad Rzeszutek Wilk
2016-03-11 16:08             ` help Safa Hamza
2016-03-11 16:09             ` help Wei Liu
     [not found]               ` <CAFwQ9hFx_ctRJdPzuE03asqYwcdxAGPFii_Ns0WFk3dmrVSfBQ@mail.gmail.com>
2016-03-11 17:16                 ` help Wei Liu
2016-03-15 17:56                   ` help Julien Grall
2016-03-15 18:09                     ` help Konrad Rzeszutek Wilk
2016-03-15 18:16                       ` help Julien Grall
2016-03-15 18:21                         ` help Konrad Rzeszutek Wilk
2016-03-15 18:22                           ` help Julien Grall
2016-03-15 21:01                   ` help Safa Hamza
2016-03-15 23:47                     ` help Doug Goldstein
2015-11-24 14:40 Help Almeida, Gabriel
2015-11-23 18:31 help Carlos Palminha
2015-11-02  8:22 Help Almeida, Gabriel
2015-11-02 17:38 ` Help Michael Wood
2015-11-30  7:31 ` Help Almeida, Gabriel
     [not found] <CAD-PXq+fMXjH3r==9wDBRn0U37HLmkfWPT7JPh+82OWQEqph-w@mail.gmail.com>
2015-09-30  9:41 ` Help Mulyadi Santosa
2015-10-05 18:00   ` Help Prem Kumar
2015-07-23 15:05 Help Akash Talole
2015-07-24  7:46 ` Help Wei Liu
2015-07-03  8:45 Help Akash Talole
     [not found] <557FA708.7020101@yahoo.fr>
2015-06-25  4:51 ` Help Luc Pierard de Maujouy
2015-06-25  8:51   ` Help Ian Campbell
2015-01-21 20:38 Help Natesh Relhan
2015-01-14  9:16 Help SAJID HOSSAIN
2015-01-14 10:19 ` Help Anuz Pratap Singh Tomar
2015-01-14 10:24   ` Help Anuz Pratap Singh Tomar
2014-12-04 19:01 help m_del_buon
2014-12-04 19:19 ` help Arend van Spriel
2014-10-09 12:43 help Manuel Piroz
2014-10-09 13:14 ` help Burton, Ross
2013-03-23  7:51 Help Arun Kv
2013-03-25 10:54 ` Help George Dunlap
2013-01-23  9:59 help Narendra Pal Singh
     [not found] <mailman.3.1347822001.6317.yocto@yoctoproject.org>
2012-09-16 19:10 ` help Jam1e Harr1s
2012-08-21  1:26 help du81692468
2012-08-23 19:18 ` help Dexter Filmore
2012-06-14 16:30 help chen.chenchacha
2011-11-18  5:12 help shepherd Lazy
2011-10-29 20:37 help Kai Moonbourn
2011-10-28  4:15 Help Pankaj Kumar Biswas
2011-10-28  8:47 ` Help Ian Campbell
2011-10-17 23:50 help Mario Torres
2011-10-14 16:22 help Mario Torres
2011-10-14 16:21 help Mario Torres
2011-07-28 23:33 help Martin Partridge
2011-07-28 23:47 ` help Christian Lamparter
2011-07-29  3:12 ` help Pavel Roskin
2011-07-29 16:32   ` help Pavel Roskin
2011-04-22  8:49 help wolfu
2010-12-21  7:58 help andy xu
2010-09-20 12:06 help Marcos
2010-09-20 12:16 ` help Oskar Berggren
2010-09-20 12:06 help Marcos
2010-05-29  2:48 help code.perfect
2010-05-28  9:06 help code.perfect
2010-05-17 17:00 Help Sgt. Ken Holland
2010-05-17 17:00 ` Help Sgt. Ken Holland
2010-05-17 17:00 Help Sgt. Ken Holland
2009-10-24  5:15 help Ingo Krabbe
2009-10-19 16:07 help Jens-U. Mozdzen
2009-10-01 13:22 help Jie Cai
2009-10-01 13:16 help Jie Cai
     [not found] <E1McOLX-0003Lq-BN@665xhf1.ch3.sourceforge.com>
     [not found] ` <200908152239.15915.rjw@sisk.pl>
     [not found]   ` <20090822073516.GD2108@elf.ucw.cz>
2009-09-22 23:33     ` Help Rafael J. Wysocki
     [not found]     ` <200909230133.28689.rjw@sisk.pl>
2009-09-23 16:43       ` Help Pavel Machek
2009-09-18 11:19 Help Lorenzo Brito Morales
2009-09-18 13:18 ` Help Iain Hibbert
2009-09-10 13:57 help Dante Durham
2009-08-21 13:27 RAID10 Layouts Info
2009-08-21 16:43 ` Goswin von Brederlow
2009-08-21 18:02   ` Info
2009-08-21 19:20     ` Help Info
2009-08-21 19:38       ` Help John Robinson
2009-08-21 20:51         ` Help Info
2009-08-22  6:14       ` Help Info
2009-08-22  9:34         ` Help NeilBrown
2009-08-22 12:56           ` Help Info
2009-08-22 16:47             ` Help John Robinson
2009-08-22 18:12               ` Help Info
2009-08-22 20:45                 ` Help Info
2009-08-22 20:59                   ` Help Guy Watkins
     [not found]                     ` <200908230631.46865.Info@quantum-sci.net>
2009-08-24 23:08                       ` Help Info
2009-08-24 23:38                         ` Help NeilBrown
2009-08-25 13:18                           ` Help Info
2009-08-27 12:47                             ` Help Info
2009-08-23 20:28                 ` Help John Robinson
2009-04-24 11:31 Help Sudeept Prusti
2009-04-24 11:39 ` Help Jaroslav Kysela
2009-04-24 11:53   ` Help Sudeept Prusti
2009-04-24 16:05     ` Help Alan Horstmann
     [not found] <20081205170026.821496198E3@hormel.redhat.com>
2008-12-05 17:24 ` help Brian Rosenberger
2008-09-28  5:06 help Reg Clemens
2008-08-13  9:26 Help Boris Shteinbock
2008-08-13 12:02 ` Help Arnd Bergmann
2008-08-13  8:22 help Artem Bityutskiy
2008-08-13  8:29 ` help Artem Bityutskiy
2008-07-24  7:18 Help Sudeept Prusti
2008-07-24 16:53 ` Help stan
     [not found] <20080220170012.C9E168E0292@hormel.redhat.com>
2008-02-21  8:25 ` help Lothar Brendel
     [not found] <mailman.230.1199775553.6908.linuxppc-dev@ozlabs.org>
2008-01-08  7:04 ` help 张自强
2007-12-26  1:15 Help xiaodan
2007-12-10 11:48 help Thanos Chatziathanassiou
2007-12-11  1:02 ` help David Newall
2007-12-02  4:24 help YanBob
2007-12-02 17:09 ` help Tobin Davis
2007-11-26 14:53 help liujiusheng
2007-11-18 18:48 help mattias
2007-11-18 19:06 ` help Morten K. Poulsen
     [not found] <46D25A05.4070606@davidnewall.com>
2007-08-27 17:18 ` help David Newall
2007-08-27 17:31   ` help Michal Piotrowski
     [not found] <mailman.274497.1187370904.21973.nfs@lists.sourceforge.net>
2007-08-18  5:35 ` help Kapil Maheshwari
2007-05-16  0:25 help Mao Wei
2006-08-29  8:12 help Limeng [李萌]
2006-08-29  8:48 ` help Jan Engelhardt
2006-08-23 19:21 help Archie Cotton
2006-08-23 19:21 help Archie Cotton
2006-08-16 12:46 help Hemanth KumarBS
2006-08-15  2:35 help derrywang
2006-04-09 20:47 help amirhosein jahanbekam
2006-03-09  2:57 help zhaoyw
2006-03-09  9:51 ` help Matej Kupljen
2006-02-04  2:21 Help Oren Ben-Menachem
2005-12-28 10:53 help wayne.chen
     [not found] <430C62420003CAE8@mail14.jumpyint.it>
2005-12-08 17:18 ` Help helant2005
2005-11-27 20:30 help Matt Darcy
     [not found] <1122236195.3173.68.camel@localhost>
2005-11-19 12:40 ` help Yu Luming
2005-11-17  6:02 help prabha.j
2005-11-17 14:04 ` help Wolfgang Denk
2005-11-16  8:26 help Hua Feijun
2005-11-16  8:40 ` help Ian McDonald
2005-08-29  4:01 help raja
2005-08-29  4:41 ` help Randy.Dunlap
2005-08-27  7:01 help raja
2005-08-27  7:32 ` help Pekka Enberg
2005-08-09 17:24 help androsov
     [not found] ` <000001c59d07$3a9ee170$a14a3d0a-8fM5sft8TcWs1BDpvl8NfQ@public.gmane.org>
2005-08-09 17:59   ` help Andrew Haninger
     [not found]     ` <105c793f05080910595ceb4199-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2005-08-10  7:28       ` help Bruno Ducrot
2005-07-26  9:21 help 戴红刚
2005-07-25  7:50 help support
2005-07-21 11:39 help Jordan, Kyle
2005-07-21  5:59 help 戴红刚
2005-05-28 14:15 help John W. M. Stevens
2005-05-19  6:23 help NEC
2005-05-19  6:23 ` help Jean Delvare
2005-05-19  6:23 ` Help Ville Jutvik
2005-05-19  6:23 ` Help phil
2005-05-19  6:23 ` Help Mark Studebaker
2005-05-19  6:23 ` help Kyösti Mälkki
2005-05-19  6:23 ` help Stealth
2005-05-19  6:25 ` HELP Lev A. Melnikovsky
2005-05-13 13:25 [PATCH 2.6] vr41xx: remove old TB0219 driver Yoichi Yuasa
2005-05-17  6:20 ` help Steve Alexander
2005-05-10  8:01 help andyliu
2005-05-07 13:46 help sen lin
2005-04-07 16:29 Help James Carlson
2005-04-07 16:32 ` Help Kumar
2005-04-07 16:42 ` Help Bill Unruh
2005-01-24  4:33 help wayne.chen
2005-01-22 10:12 Help Pankaj Agarwal
2005-01-22 11:16 ` Help Graeme T Ford
2005-01-11 15:36 help Bhupesh Kumar Pandey, Noida
2005-01-11 15:51 ` help Greg KH
2005-01-11 17:00   ` help Theodore Ts'o
2005-01-11 16:07 ` help Erik Mouw
2005-01-11 14:28 help Bhupesh Kumar Pandey, Noida
2005-01-11 15:16 ` help Greg KH
2004-12-11 11:25 HELP Bartosz Hetmanski
2004-11-25  9:55 help Bakki Srinivas
2004-11-27  9:57 ` help Jan-Benedict Glaw
2004-11-09  9:57 help sebastian.ionita
2004-10-20  5:05 help Srinivasa S
2004-10-20  5:50 ` help Guy
2004-10-21  1:47 ` help Jon Lewis
2004-08-18 12:24 help Manik Raina
2004-04-01 16:56 Help Jason C. Leach
2004-04-01 17:00 ` Help Måns Rullgård
2004-04-01  0:50 help g lh
2004-03-06 17:00 help Billy Rose
2004-03-06 19:22 ` help Francois Romieu
2004-02-01 13:13 help Rami Addady
2003-12-14 22:30 help Cristiano Soares
2003-12-17 18:09 ` help Ian Hunter
2003-12-17 18:22   ` help Antony Stone
2003-10-30 10:04 help stefan.eletzhofer
2003-10-28  3:04 help Kenneth H. Braun
2003-08-29 13:58 help Adeel Malik
2003-08-29 12:57 help Adeel Malik
     [not found] <20030725061502.30342.8650.Mailman@kashyyyk>
2003-07-25 14:33 ` help durga prasad
2003-07-23  6:53 help Adeel Malik
2003-07-23  6:53 ` help Adeel Malik
2003-07-07 18:20 help Justin Rush
2003-06-10 22:15 help George Vieira
2003-06-06  5:55 Help madalin mihailescu
2003-06-11  1:14 ` Help Lucas Correia Villa Real
2003-06-05  9:19 help dawn lin
2003-06-02  7:47 supermount for 2.5 test version available Andrey Borzenkov
2003-06-02  8:02 ` help Pedro Requejo
2003-06-02  0:54 help 김용철
2003-05-31  2:25 help chandrashekhar dethe
2003-04-09  9:40 help prem nath
2003-03-08  6:10 help kalpesh
2003-03-08  8:28 ` help Patrick Schaaf
2003-02-22  8:55 YAMON Harald Koerfgen
2001-08-14  5:54 ` help Sathish Vasudevaiah
2003-02-17 15:04 help Khanh Tran
2003-02-17 10:11 help Laxman Gummadavally
2003-01-02 21:01 Help lmonroy
2003-01-03  7:17 ` Help Reinhard Karcher
2002-12-25  7:31 help Mailhebuau Christophe
2002-12-18 15:23 Help manish
2002-12-18 16:00 ` Help Maciej Soltysiak
2002-12-18 15:00 Help manish
2002-12-11 17:45 Help manish
2002-12-05 16:14 help Dmitry V. Zhulanov
2002-12-05 15:17 help Dmitry V. Zhulanov
2002-11-18 13:24 help Hyunjung Park
     [not found] <E18D9IZ-0006nI-00@sc8-sf-list2.sourceforge.net>
     [not found] ` <E18D9IZ-0006nI-00-ek0oC1U1TqqnvZpeIfgr/KQD96bmaF075NbjCUgZEJk@public.gmane.org>
2002-11-16 20:22   ` help deepak singh
     [not found] <F392BE64738A7143B00E86A5634FBF142C85@akun2900.intra.savi.ch>
2002-10-31  8:50 ` Help Antony Stone
2002-10-11 10:38 help Nataraj
2002-10-14  4:02 ` help ashutosh.varshney
2001-11-19 20:48 Help dave
2001-11-20 13:19 ` Help David Woodhouse
2001-06-07  9:04 HELP Abraham vd Merwe
2001-06-07  9:35 ` HELP David Woodhouse
2001-06-07  9:43   ` HELP Abraham vd Merwe
2001-06-07 14:30     ` HELP Nicolas Pitre
2001-06-07  9:44   ` HELP David Woodhouse
2001-06-07  9:47     ` HELP Abraham vd Merwe
2001-06-07 17:21     ` HELP Russ Dill
2001-06-07 20:01     ` HELP David Woodhouse
2001-06-07  9:48   ` HELP David Woodhouse
2001-06-07  9:51     ` HELP Abraham vd Merwe
2001-06-07 10:16     ` HELP David Woodhouse
2001-06-07 14:23   ` HELP Nicolas Pitre

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.