* Re: [linux-lvm] Remove a LUN from a LVM mirror cause logical volume not response
From: Hal Martin @ 2011-10-24 13:29 UTC (permalink / raw)
To: LVM general discussion and development
In-Reply-To: <02292FBD45CF4C40AA7104EA7B291B7002A1DBA130@mxb-zv04.LVRINTERN.LVR.DE>
I don't have experience doing exactly what you're doing, but have you
checked that multipath is failing over correctly when your SAN is
missing a LUN?
Can you post the output of that command with '-vvvv' added?
-Hal
On Mon, Oct 24, 2011 at 8:48 AM, Matecki, Lukas <Lukas.Matecki@lvr.de> wrote:
> Second try this time with the right subject, sry Monday -.-
>
> Hallo List,
>
> We are using LVM with SAN and multipathd. I try to setup mirroring with LVM. So I do pv create on a mpath device. vgcreate, add the pv to the vg, create a lv and setup a mirror with this:
>
> lvconvert -m1 vg<name>/lv<name> /dev/mapper/mpath0 --mirrorlog core
>
> My intention is to create a logical volume which can handle SAN Disk failure.
>
> But in this shown setup i get a error (unavailable logical volume) when one of the san LUNS is missing.
>
> Can this system work or did i need to setup a mdadm device before pvcreate ?
>
> Hope you can help me because Redhat can't... them sitting two weeks on this error / miss configuration without any solution...
>
> Greetings
>
> Luke
>
> _______________________________________________
> linux-lvm mailing list
> linux-lvm@redhat.com
> https://www.redhat.com/mailman/listinfo/linux-lvm
> read the LVM HOW-TO at http://tldp.org/HOWTO/LVM-HOWTO/
>
^ permalink raw reply
* [PATCH V2 0/3] Clearify code paths for how to modify the power register
From: Ulf Hansson @ 2011-10-24 13:28 UTC (permalink / raw)
To: linux-mmc, linux-arm-kernel; +Cc: Russell King, Ulf Hansson, Lee Jones
In the set_ios function there has been a mess of how the power register
can be modified. One part, especially strange was related to the use of
the vdd_handler.
V2 changes:
-Rebased to remove dependency to other patch serie for mmci called
"mmc: mmci: Improvements and bugfixes for SDIO".
-Fixed minor review comments.
Sebastian Rasmussen (1):
mmc: mmci: Put power register deviations in variant data
Ulf Hansson (2):
mmc: mmci: Provide option to configure bus signal direction
mmc: mmci: Change vdd_handler to a generic ios_handler
arch/arm/mach-ux500/board-mop500-sdi.c | 21 +++++--------
drivers/mmc/host/mmci.c | 49 ++++++++++++++++++++++++++-----
drivers/mmc/host/mmci.h | 10 ------
include/linux/amba/mmci.h | 22 ++++++++++++--
4 files changed, 68 insertions(+), 34 deletions(-)
--
1.7.5.4
^ permalink raw reply
* [PATCH V2 3/3] mmc: mmci: Change vdd_handler to a generic ios_handler
From: Ulf Hansson @ 2011-10-24 13:28 UTC (permalink / raw)
To: linux-mmc, linux-arm-kernel
Cc: Russell King, Ulf Hansson, Lee Jones, Sebastian Rasmussen
In-Reply-To: <1319462928-14892-1-git-send-email-ulf.hansson@stericsson.com>
The purpose of the vdd_handler does not make sense. We remove it
and use a generic approach instead. A new ios_handler is added, the
purpose of which e.g. can be to control GPIO pins to a levelshifter.
Previously the vdd_handler was also used for making additional
changes to the power register bits. This option is superfluous and is
therefore removed.
Adaptaptions from the old vdd_handler to the new ios_handler is done for
mach-ux500 board, which was the only one using the vdd_handler.
This patch is based upon a patch from Sebastian Rasmussen.
Signed-off-by: Ulf Hansson <ulf.hansson@stericsson.com>
Signed-off-by: Sebastian Rasmussen <sebastian.rasmussen@stericsson.com>
---
arch/arm/mach-ux500/board-mop500-sdi.c | 21 ++++++++-------------
drivers/mmc/host/mmci.c | 8 ++++----
include/linux/amba/mmci.h | 6 +++---
3 files changed, 15 insertions(+), 20 deletions(-)
diff --git a/arch/arm/mach-ux500/board-mop500-sdi.c b/arch/arm/mach-ux500/board-mop500-sdi.c
index 6826fae..3578c51 100644
--- a/arch/arm/mach-ux500/board-mop500-sdi.c
+++ b/arch/arm/mach-ux500/board-mop500-sdi.c
@@ -25,21 +25,13 @@
* SDI 0 (MicroSD slot)
*/
-/* MMCIPOWER bits */
-#define MCI_DATA2DIREN (1 << 2)
-#define MCI_CMDDIREN (1 << 3)
-#define MCI_DATA0DIREN (1 << 4)
-#define MCI_DATA31DIREN (1 << 5)
-#define MCI_FBCLKEN (1 << 7)
-
/* GPIO pins used by the sdi0 level shifter */
static int sdi0_en = -1;
static int sdi0_vsel = -1;
-static u32 mop500_sdi0_vdd_handler(struct device *dev, unsigned int vdd,
- unsigned char power_mode)
+static int mop500_sdi0_ios_handler(struct device *dev, struct mmc_ios *ios)
{
- switch (power_mode) {
+ switch (ios->power_mode) {
case MMC_POWER_UP:
case MMC_POWER_ON:
/*
@@ -59,8 +51,7 @@ static u32 mop500_sdi0_vdd_handler(struct device *dev, unsigned int vdd,
break;
}
- return MCI_FBCLKEN | MCI_CMDDIREN | MCI_DATA0DIREN |
- MCI_DATA2DIREN | MCI_DATA31DIREN;
+ return 0;
}
#ifdef CONFIG_STE_DMA40
@@ -84,13 +75,17 @@ static struct stedma40_chan_cfg mop500_sdi0_dma_cfg_tx = {
#endif
static struct mmci_platform_data mop500_sdi0_data = {
- .vdd_handler = mop500_sdi0_vdd_handler,
+ .ios_handler = mop500_sdi0_ios_handler,
.ocr_mask = MMC_VDD_29_30,
.f_max = 50000000,
.capabilities = MMC_CAP_4_BIT_DATA |
MMC_CAP_SD_HIGHSPEED |
MMC_CAP_MMC_HIGHSPEED,
.gpio_wp = -1,
+ .sigdir = MCI_ST_FBCLKEN |
+ MCI_ST_CMDDIREN |
+ MCI_ST_DATA0DIREN |
+ MCI_ST_DATA2DIREN,
#ifdef CONFIG_STE_DMA40
.dma_filter = stedma40_filter,
.dma_rx_param = &mop500_sdi0_dma_cfg_rx,
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
index 55e460c..3c8ad6b 100644
--- a/drivers/mmc/host/mmci.c
+++ b/drivers/mmc/host/mmci.c
@@ -1023,6 +1023,10 @@ static void mmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
unsigned long flags;
int ret;
+ if (host->plat->ios_handler &&
+ host->plat->ios_handler(mmc_dev(mmc), ios))
+ dev_err(mmc_dev(mmc), "platform ios_handler failed\n");
+
switch (ios->power_mode) {
case MMC_POWER_OFF:
if (host->vcc)
@@ -1042,10 +1046,6 @@ static void mmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
return;
}
}
- if (host->plat->vdd_handler)
- pwr |= host->plat->vdd_handler(mmc_dev(mmc), ios->vdd,
- ios->power_mode);
-
/*
* The ST Micro variant doesn't have the PL180s MCI_PWR_UP
* and instead uses MCI_PWR_ON so apply whatever value is
diff --git a/include/linux/amba/mmci.h b/include/linux/amba/mmci.h
index 8ce34e8..84766fd 100644
--- a/include/linux/amba/mmci.h
+++ b/include/linux/amba/mmci.h
@@ -31,7 +31,8 @@ struct dma_chan;
* @ocr_mask: available voltages on the 4 pins from the block, this
* is ignored if a regulator is used, see the MMC_VDD_* masks in
* mmc/host.h
- * @vdd_handler: a callback function to translate a MMC_VDD_*
+ * @ios_handler: a callback function to act on specfic ios changes,
+ * used for example to control a levelshifter
* mask into a value to be binary (or set some other custom bits
* in MMCIPWR) or:ed and written into the MMCIPWR register of the
* block. May also control external power based on the power_mode.
@@ -60,8 +61,7 @@ struct dma_chan;
struct mmci_platform_data {
unsigned int f_max;
unsigned int ocr_mask;
- u32 (*vdd_handler)(struct device *, unsigned int vdd,
- unsigned char power_mode);
+ int (*ios_handler)(struct device *, struct mmc_ios *);
unsigned int (*status)(struct device *);
int gpio_wp;
int gpio_cd;
--
1.7.5.4
^ permalink raw reply related
* [PATCH V2 1/3] mmc: mmci: Put power register deviations in variant data
From: Ulf Hansson @ 2011-10-24 13:28 UTC (permalink / raw)
To: linux-mmc, linux-arm-kernel
Cc: Russell King, Ulf Hansson, Lee Jones, Sebastian Rasmussen
In-Reply-To: <1319462928-14892-1-git-send-email-ulf.hansson@stericsson.com>
From: Sebastian Rasmussen <sebastian.rasmussen@stericsson.com>
Use variant data to store hardware controller deviations concerning
power registers to improve readability of the code.
Signed-off-by: Sebastian Rasmussen <sebastian.rasmussen@stericsson.com>
Signed-off-by: Ulf Hansson <ulf.hansson@stericsson.com>
Reviewed-by: Linus Walleij <linus.walleij@stericsson.com>
---
drivers/mmc/host/mmci.c | 22 +++++++++++++++++-----
1 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
index 50b5f99..1296719 100644
--- a/drivers/mmc/host/mmci.c
+++ b/drivers/mmc/host/mmci.c
@@ -53,6 +53,7 @@ static unsigned int fmax = 515633;
* @sdio: variant supports SDIO
* @st_clkdiv: true if using a ST-specific clock divider algorithm
* @blksz_datactrl16: true if Block size is at b16..b30 position in datactrl register
+ * @pwrreg_powerup: power up value for MMCIPOWER register
*/
struct variant_data {
unsigned int clkreg;
@@ -63,18 +64,21 @@ struct variant_data {
bool sdio;
bool st_clkdiv;
bool blksz_datactrl16;
+ u32 pwrreg_powerup;
};
static struct variant_data variant_arm = {
.fifosize = 16 * 4,
.fifohalfsize = 8 * 4,
.datalength_bits = 16,
+ .pwrreg_powerup = MCI_PWR_UP,
};
static struct variant_data variant_arm_extended_fifo = {
.fifosize = 128 * 4,
.fifohalfsize = 64 * 4,
.datalength_bits = 16,
+ .pwrreg_powerup = MCI_PWR_UP,
};
static struct variant_data variant_u300 = {
@@ -83,6 +87,7 @@ static struct variant_data variant_u300 = {
.clkreg_enable = MCI_ST_U300_HWFCEN,
.datalength_bits = 16,
.sdio = true,
+ .pwrreg_powerup = MCI_PWR_ON,
};
static struct variant_data variant_ux500 = {
@@ -93,6 +98,7 @@ static struct variant_data variant_ux500 = {
.datalength_bits = 24,
.sdio = true,
.st_clkdiv = true,
+ .pwrreg_powerup = MCI_PWR_ON,
};
static struct variant_data variant_ux500v2 = {
@@ -104,6 +110,7 @@ static struct variant_data variant_ux500v2 = {
.sdio = true,
.st_clkdiv = true,
.blksz_datactrl16 = true,
+ .pwrreg_powerup = MCI_PWR_ON,
};
/*
@@ -1006,6 +1013,7 @@ static void mmci_request(struct mmc_host *mmc, struct mmc_request *mrq)
static void mmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
{
struct mmci_host *host = mmc_priv(mmc);
+ struct variant_data *variant = host->variant;
u32 pwr = 0;
unsigned long flags;
int ret;
@@ -1032,11 +1040,15 @@ static void mmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
if (host->plat->vdd_handler)
pwr |= host->plat->vdd_handler(mmc_dev(mmc), ios->vdd,
ios->power_mode);
- /* The ST version does not have this, fall through to POWER_ON */
- if (host->hw_designer != AMBA_VENDOR_ST) {
- pwr |= MCI_PWR_UP;
- break;
- }
+
+ /*
+ * The ST Micro variant doesn't have the PL180s MCI_PWR_UP
+ * and instead uses MCI_PWR_ON so apply whatever value is
+ * configured in the variant data.
+ */
+ pwr |= variant->pwrreg_powerup;
+
+ break;
case MMC_POWER_ON:
pwr |= MCI_PWR_ON;
break;
--
1.7.5.4
^ permalink raw reply related
* [PATCH V2 2/3] mmc: mmci: Provide option to configure bus signal direction
From: Ulf Hansson @ 2011-10-24 13:28 UTC (permalink / raw)
To: linux-mmc, linux-arm-kernel
Cc: Russell King, Ulf Hansson, Lee Jones, Sebastian Rasmussen
In-Reply-To: <1319462928-14892-1-git-send-email-ulf.hansson@stericsson.com>
The ST Micro variant supports bus signal direction indication. A new
member in the variant struct is added for this.
Moreover the actual signal direction configuration is board specific,
thus the amba mmci platform data is extended with a new member to be
able provide mmci with these specific board configurations.
This patch is based upon a patch from Sebastian Rasmussen.
Signed-off-by: Ulf Hansson <ulf.hansson@stericsson.com>
Signed-off-by: Sebastian Rasmussen <sebastian.rasmussen@stericsson.com>
---
drivers/mmc/host/mmci.c | 21 +++++++++++++++++++++
drivers/mmc/host/mmci.h | 10 ----------
include/linux/amba/mmci.h | 16 ++++++++++++++++
3 files changed, 37 insertions(+), 10 deletions(-)
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
index 1296719..55e460c 100644
--- a/drivers/mmc/host/mmci.c
+++ b/drivers/mmc/host/mmci.c
@@ -54,6 +54,7 @@ static unsigned int fmax = 515633;
* @st_clkdiv: true if using a ST-specific clock divider algorithm
* @blksz_datactrl16: true if Block size is at b16..b30 position in datactrl register
* @pwrreg_powerup: power up value for MMCIPOWER register
+ * @signal_direction: input/out direction of bus signals can be indicated
*/
struct variant_data {
unsigned int clkreg;
@@ -65,6 +66,7 @@ struct variant_data {
bool st_clkdiv;
bool blksz_datactrl16;
u32 pwrreg_powerup;
+ bool signal_direction;
};
static struct variant_data variant_arm = {
@@ -88,6 +90,7 @@ static struct variant_data variant_u300 = {
.datalength_bits = 16,
.sdio = true,
.pwrreg_powerup = MCI_PWR_ON,
+ .signal_direction = true,
};
static struct variant_data variant_ux500 = {
@@ -99,6 +102,7 @@ static struct variant_data variant_ux500 = {
.sdio = true,
.st_clkdiv = true,
.pwrreg_powerup = MCI_PWR_ON,
+ .signal_direction = true,
};
static struct variant_data variant_ux500v2 = {
@@ -111,6 +115,7 @@ static struct variant_data variant_ux500v2 = {
.st_clkdiv = true,
.blksz_datactrl16 = true,
.pwrreg_powerup = MCI_PWR_ON,
+ .signal_direction = true,
};
/*
@@ -1054,6 +1059,22 @@ static void mmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
break;
}
+ if (variant->signal_direction && ios->power_mode != MMC_POWER_OFF) {
+ /*
+ * The ST Micro variant has some additional bits
+ * indicating signal direction for the signals in
+ * the SD/MMC bus and feedback-clock usage.
+ */
+ pwr |= host->plat->sigdir;
+
+ if (ios->bus_width == MMC_BUS_WIDTH_4)
+ pwr &= ~MCI_ST_DATA74DIREN;
+ else if (ios->bus_width == MMC_BUS_WIDTH_1)
+ pwr &= (~MCI_ST_DATA74DIREN &
+ ~MCI_ST_DATA31DIREN &
+ ~MCI_ST_DATA2DIREN);
+ }
+
if (ios->bus_mode == MMC_BUSMODE_OPENDRAIN) {
if (host->hw_designer != AMBA_VENDOR_ST)
pwr |= MCI_ROD;
diff --git a/drivers/mmc/host/mmci.h b/drivers/mmc/host/mmci.h
index 79e4143..5600755 100644
--- a/drivers/mmc/host/mmci.h
+++ b/drivers/mmc/host/mmci.h
@@ -13,16 +13,6 @@
#define MCI_PWR_ON 0x03
#define MCI_OD (1 << 6)
#define MCI_ROD (1 << 7)
-/*
- * The ST Micro version does not have ROD and reuse the voltage registers
- * for direction settings
- */
-#define MCI_ST_DATA2DIREN (1 << 2)
-#define MCI_ST_CMDDIREN (1 << 3)
-#define MCI_ST_DATA0DIREN (1 << 4)
-#define MCI_ST_DATA31DIREN (1 << 5)
-#define MCI_ST_FBCLKEN (1 << 7)
-#define MCI_ST_DATA74DIREN (1 << 8)
#define MMCICLOCK 0x004
#define MCI_CLK_ENABLE (1 << 8)
diff --git a/include/linux/amba/mmci.h b/include/linux/amba/mmci.h
index 2111481..8ce34e8 100644
--- a/include/linux/amba/mmci.h
+++ b/include/linux/amba/mmci.h
@@ -6,6 +6,19 @@
#include <linux/mmc/host.h>
+
+/*
+ * These defines is places here due to access is needed from machine
+ * configuration files. The ST Micro version does not have ROD and
+ * reuse the voltage registers for direction settings.
+ */
+#define MCI_ST_DATA2DIREN (1 << 2)
+#define MCI_ST_CMDDIREN (1 << 3)
+#define MCI_ST_DATA0DIREN (1 << 4)
+#define MCI_ST_DATA31DIREN (1 << 5)
+#define MCI_ST_FBCLKEN (1 << 7)
+#define MCI_ST_DATA74DIREN (1 << 8)
+
/* Just some dummy forwarding */
struct dma_chan;
@@ -30,6 +43,8 @@ struct dma_chan;
* @cd_invert: true if the gpio_cd pin value is active low
* @capabilities: the capabilities of the block as implemented in
* this platform, signify anything MMC_CAP_* from mmc/host.h
+ * @sigdir: a bit field indicating for what bits in the MMC bus the host
+ * should enable signal direction indication.
* @dma_filter: function used to select an appropriate RX and TX
* DMA channel to be used for DMA, if and only if you're deploying the
* generic DMA engine
@@ -52,6 +67,7 @@ struct mmci_platform_data {
int gpio_cd;
bool cd_invert;
unsigned long capabilities;
+ u32 sigdir;
bool (*dma_filter)(struct dma_chan *chan, void *filter_param);
void *dma_rx_param;
void *dma_tx_param;
--
1.7.5.4
^ permalink raw reply related
* Re: [PATCH v2 3/5] regulator: helper routine to extract regulator_init_data
From: Shawn Guo @ 2011-10-24 13:40 UTC (permalink / raw)
To: Mark Brown
Cc: Grant Likely, Rajendra Nayak, patches, tony, devicetree-discuss,
linux-kernel, linux-omap, lrg, linux-arm-kernel
In-Reply-To: <20111024130636.GB26033@opensource.wolfsonmicro.com>
On Mon, Oct 24, 2011 at 03:06:37PM +0200, Mark Brown wrote:
> On Mon, Oct 24, 2011 at 09:04:31PM +0800, Shawn Guo wrote:
>
> > If we can attach the device_node of 'regulators' node to dev->of_node
> > when calling regulator_register(regulator_desc, dev, ...) from
> > regulator driver, the regulator core will be able to find all nodes under
> > 'regulators' using for_each_child_of_node(dev->of_node, child).
>
> Please provide concrete examples of the bindings you're talking about,
> the really important thing here is how sane the bindings look and I've
> really got no idea what any of what you're talking about will look like
> or if they make sense.
>
The only thing different from what I attached last time is the
compatible string added to 'regulators' node.
ecspi@70010000 { /* ECSPI1 */
fsl,spi-num-chipselects = <2>;
cs-gpios = <&gpio3 24 0>, /* GPIO4_24 */
<&gpio3 25 0>; /* GPIO4_25 */
status = "okay";
pmic: mc13892@0 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl,mc13892";
spi-max-frequency = <6000000>;
reg = <0>;
mc13xxx-irq-gpios = <&gpio0 8 0>; /* GPIO1_8 */
regulators {
compatible = "fsl,mc13892-regulator";
sw1reg: mc13892_sw1 {
regulator-min-uV = <600000>;
regulator-max-uV = <1375000>;
regulator-change-voltage;
regulator-boot-on;
regulator-always-on;
};
sw2reg: mc13892_sw2 {
regulator-min-uV = <900000>;
regulator-max-uV = <1850000>;
regulator-change-voltage;
regulator-boot-on;
regulator-always-on;
};
......
};
leds {
......
};
buttons {
......
};
};
flash: at45db321d@1 {
......
};
};
> > hesitate to hack this into mfd_add_devices(), so I would like to add
> > compatible string "fsl,mc13892-regulators" to node 'regulators' and
> > find the node using of_find_compatible_node(dev->parent, NULL,
> > "fsl,mc13892-regulators").
>
> It's not immediately obvious to me that having a binding for the
> regulators separately makes sense, it's not a usefully distinct device.
>
Fair point. Actually, I also hate to have the finding of node
'regulators' plugged into regulator driver. What about following
change to address Grant's concern on global device tree search?
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index 8fe132d..29dcf90 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -2673,7 +2673,8 @@ struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc,
BLOCKING_INIT_NOTIFIER_HEAD(&rdev->notifier);
/* find device_node and attach it */
- rdev->dev.of_node = of_find_node_by_name(NULL, regulator_desc->name);
+ rdev->dev.of_node = of_find_node_by_name(dev->parent->of_node,
+ regulator_desc->name);
/* register with sysfs */
rdev->dev.class = ®ulator_class;
--
Regards,
Shawn
^ permalink raw reply related
* Re: [PATCH v2 3/5] regulator: helper routine to extract regulator_init_data
From: Shawn Guo @ 2011-10-24 13:40 UTC (permalink / raw)
To: Mark Brown
Cc: Grant Likely, Rajendra Nayak, patches, tony, devicetree-discuss,
linux-kernel, linux-omap, lrg, linux-arm-kernel
In-Reply-To: <20111024130636.GB26033@opensource.wolfsonmicro.com>
On Mon, Oct 24, 2011 at 03:06:37PM +0200, Mark Brown wrote:
> On Mon, Oct 24, 2011 at 09:04:31PM +0800, Shawn Guo wrote:
>
> > If we can attach the device_node of 'regulators' node to dev->of_node
> > when calling regulator_register(regulator_desc, dev, ...) from
> > regulator driver, the regulator core will be able to find all nodes under
> > 'regulators' using for_each_child_of_node(dev->of_node, child).
>
> Please provide concrete examples of the bindings you're talking about,
> the really important thing here is how sane the bindings look and I've
> really got no idea what any of what you're talking about will look like
> or if they make sense.
>
The only thing different from what I attached last time is the
compatible string added to 'regulators' node.
ecspi@70010000 { /* ECSPI1 */
fsl,spi-num-chipselects = <2>;
cs-gpios = <&gpio3 24 0>, /* GPIO4_24 */
<&gpio3 25 0>; /* GPIO4_25 */
status = "okay";
pmic: mc13892@0 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl,mc13892";
spi-max-frequency = <6000000>;
reg = <0>;
mc13xxx-irq-gpios = <&gpio0 8 0>; /* GPIO1_8 */
regulators {
compatible = "fsl,mc13892-regulator";
sw1reg: mc13892_sw1 {
regulator-min-uV = <600000>;
regulator-max-uV = <1375000>;
regulator-change-voltage;
regulator-boot-on;
regulator-always-on;
};
sw2reg: mc13892_sw2 {
regulator-min-uV = <900000>;
regulator-max-uV = <1850000>;
regulator-change-voltage;
regulator-boot-on;
regulator-always-on;
};
......
};
leds {
......
};
buttons {
......
};
};
flash: at45db321d@1 {
......
};
};
> > hesitate to hack this into mfd_add_devices(), so I would like to add
> > compatible string "fsl,mc13892-regulators" to node 'regulators' and
> > find the node using of_find_compatible_node(dev->parent, NULL,
> > "fsl,mc13892-regulators").
>
> It's not immediately obvious to me that having a binding for the
> regulators separately makes sense, it's not a usefully distinct device.
>
Fair point. Actually, I also hate to have the finding of node
'regulators' plugged into regulator driver. What about following
change to address Grant's concern on global device tree search?
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index 8fe132d..29dcf90 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -2673,7 +2673,8 @@ struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc,
BLOCKING_INIT_NOTIFIER_HEAD(&rdev->notifier);
/* find device_node and attach it */
- rdev->dev.of_node = of_find_node_by_name(NULL, regulator_desc->name);
+ rdev->dev.of_node = of_find_node_by_name(dev->parent->of_node,
+ regulator_desc->name);
/* register with sysfs */
rdev->dev.class = ®ulator_class;
--
Regards,
Shawn
^ permalink raw reply related
* Re: [CONSOLIDATED PULL 11/27] pulseaudio-0.9.23: inherit perlnative to work around build on host without XML/Parser.pm
From: Martin Jansa @ 2011-10-24 13:24 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer
In-Reply-To: <1319462157.25011.1.camel@ted>
[-- Attachment #1: Type: text/plain, Size: 1555 bytes --]
On Mon, Oct 24, 2011 at 02:15:57PM +0100, Richard Purdie wrote:
> On Sun, 2011-10-23 at 11:26 -0700, Saul Wold wrote:
> > From: Martin Jansa <Martin.Jansa@gmail.com>
> >
> > Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
> > ---
> > .../pulseaudio/pulseaudio_0.9.23.bb | 2 +-
> > 1 files changed, 1 insertions(+), 1 deletions(-)
> >
> > diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio_0.9.23.bb b/meta/recipes-multimedia/pulseaudio/pulseaudio_0.9.23.bb
> > index 33f5e15..4ac2418 100644
> > --- a/meta/recipes-multimedia/pulseaudio/pulseaudio_0.9.23.bb
> > +++ b/meta/recipes-multimedia/pulseaudio/pulseaudio_0.9.23.bb
> > @@ -4,7 +4,7 @@ PR = "r5"
> >
> > DEPENDS += "gdbm speex"
> >
> > -inherit gettext
> > +inherit gettext perlnative
>
> This doesn't look right. If we need xmlparser, we should state that in
> DEPENDS. If that is added to DEPENDS, I'm not sure we still need the
> inherit of perlnative?
Yes I've forgot to put it in DEPENDS, khem sent version where he is
adding this inherit and DEPENDs..
but both are needed and only work arounds because build is calling perl
(not env perl) and perlnative helps to put perl from perl-native before
perl from host in PATH.
Reported here:
http://lists.linuxtogo.org/pipermail/openembedded-core/2011-October/011323.html
And I've sent this as work around before I'll fill oe-core bug report or
someone updates it to 1.1 and maybe fix it too.
Regards,
--
Martin 'JaMa' Jansa jabber: Martin.Jansa@gmail.com
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 205 bytes --]
^ permalink raw reply
* [PATCH 1/2] Bluetooth: Return proper error codes on rfcomm tty init
From: David Herrmann @ 2011-10-24 13:30 UTC (permalink / raw)
To: linux-bluetooth; +Cc: padovan, David Herrmann
Forward error codes from tty core to the rfcomm_init caller instead of using
generic -1 errors.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
---
net/bluetooth/rfcomm/tty.c | 9 ++++++---
1 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c
index c258796..2b753a3 100644
--- a/net/bluetooth/rfcomm/tty.c
+++ b/net/bluetooth/rfcomm/tty.c
@@ -1155,9 +1155,11 @@ static const struct tty_operations rfcomm_ops = {
int __init rfcomm_init_ttys(void)
{
+ int error;
+
rfcomm_tty_driver = alloc_tty_driver(RFCOMM_TTY_PORTS);
if (!rfcomm_tty_driver)
- return -1;
+ return -ENOMEM;
rfcomm_tty_driver->owner = THIS_MODULE;
rfcomm_tty_driver->driver_name = "rfcomm";
@@ -1172,10 +1174,11 @@ int __init rfcomm_init_ttys(void)
rfcomm_tty_driver->init_termios.c_lflag &= ~ICANON;
tty_set_operations(rfcomm_tty_driver, &rfcomm_ops);
- if (tty_register_driver(rfcomm_tty_driver)) {
+ error = tty_register_driver(rfcomm_tty_driver);
+ if (error) {
BT_ERR("Can't register RFCOMM TTY driver");
put_tty_driver(rfcomm_tty_driver);
- return -1;
+ return error;
}
BT_INFO("RFCOMM TTY layer initialized");
--
1.7.7
^ permalink raw reply related
* [PATCH 2/2] Bluetooth: Replace rfcomm tty tasklet by workqueue
From: David Herrmann @ 2011-10-24 13:30 UTC (permalink / raw)
To: linux-bluetooth; +Cc: padovan, David Herrmann
In-Reply-To: <1319463058-29311-1-git-send-email-dh.herrmann@googlemail.com>
Remove old tasklets and replace by workqueue. To avoid reentrancy (which
tasklets always avoid) we use the system_nrt_wq.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
---
net/bluetooth/rfcomm/tty.c | 16 +++++++++-------
1 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c
index 2b753a3..947f1b3 100644
--- a/net/bluetooth/rfcomm/tty.c
+++ b/net/bluetooth/rfcomm/tty.c
@@ -34,6 +34,7 @@
#include <linux/capability.h>
#include <linux/slab.h>
#include <linux/skbuff.h>
+#include <linux/workqueue.h>
#include <net/bluetooth/bluetooth.h>
#include <net/bluetooth/hci_core.h>
@@ -65,7 +66,7 @@ struct rfcomm_dev {
struct rfcomm_dlc *dlc;
struct tty_struct *tty;
wait_queue_head_t wait;
- struct tasklet_struct wakeup_task;
+ struct work_struct wakeup_task;
struct device *tty_dev;
@@ -81,7 +82,7 @@ static void rfcomm_dev_data_ready(struct rfcomm_dlc *dlc, struct sk_buff *skb);
static void rfcomm_dev_state_change(struct rfcomm_dlc *dlc, int err);
static void rfcomm_dev_modem_status(struct rfcomm_dlc *dlc, u8 v24_sig);
-static void rfcomm_tty_wakeup(unsigned long arg);
+static void rfcomm_tty_wakeup(struct work_struct *work);
/* ---- Device functions ---- */
static void rfcomm_dev_destruct(struct rfcomm_dev *dev)
@@ -257,7 +258,7 @@ static int rfcomm_dev_add(struct rfcomm_dev_req *req, struct rfcomm_dlc *dlc)
atomic_set(&dev->opened, 0);
init_waitqueue_head(&dev->wait);
- tasklet_init(&dev->wakeup_task, rfcomm_tty_wakeup, (unsigned long) dev);
+ INIT_WORK(&dev->wakeup_task, rfcomm_tty_wakeup);
skb_queue_head_init(&dev->pending);
@@ -351,7 +352,7 @@ static void rfcomm_wfree(struct sk_buff *skb)
struct rfcomm_dev *dev = (void *) skb->sk;
atomic_sub(skb->truesize, &dev->wmem_alloc);
if (test_bit(RFCOMM_TTY_ATTACHED, &dev->flags))
- tasklet_schedule(&dev->wakeup_task);
+ queue_work(system_nrt_wq, &dev->wakeup_task);
rfcomm_dev_put(dev);
}
@@ -635,9 +636,10 @@ static void rfcomm_dev_modem_status(struct rfcomm_dlc *dlc, u8 v24_sig)
}
/* ---- TTY functions ---- */
-static void rfcomm_tty_wakeup(unsigned long arg)
+static void rfcomm_tty_wakeup(struct work_struct *work)
{
- struct rfcomm_dev *dev = (void *) arg;
+ struct rfcomm_dev *dev = container_of(work, struct rfcomm_dev,
+ wakeup_task);
struct tty_struct *tty = dev->tty;
if (!tty)
return;
@@ -762,7 +764,7 @@ static void rfcomm_tty_close(struct tty_struct *tty, struct file *filp)
rfcomm_dlc_close(dev->dlc, 0);
clear_bit(RFCOMM_TTY_ATTACHED, &dev->flags);
- tasklet_kill(&dev->wakeup_task);
+ cancel_work_sync(&dev->wakeup_task);
rfcomm_dlc_lock(dev->dlc);
tty->driver_data = NULL;
--
1.7.7
^ permalink raw reply related
* Re: [Qemu-devel] [PATCH] This patch adds a new block driver : iSCSI
From: Kevin Wolf @ 2011-10-24 13:33 UTC (permalink / raw)
To: Ronnie Sahlberg
Cc: stefanha, dlaor, qemu-devel, fujita.tomonori, owasserm, pbonzini,
hch
In-Reply-To: <1316597875-30463-2-git-send-email-ronniesahlberg@gmail.com>
Am 21.09.2011 11:37, schrieb Ronnie Sahlberg:
> This provides built-in support for iSCSI to QEMU.
> This has the advantage that the iSCSI devices need not be made visible to the host, which is useful if you have very many virtual machines and very many iscsi devices.
> It also has the benefit that non-root users of QEMU can access iSCSI devices across the network without requiring root privilege on the host.
>
> This driver interfaces with the multiplatform posix library for iscsi initiator/client access to iscsi devices hosted at
> git://github.com/sahlberg/libiscsi.git
>
> The patch adds the driver to interface with the iscsi library.
> It also updated the configure script to
> * by default, probe is libiscsi is available and if so, build
> qemu against libiscsi.
> * --enable-libiscsi
> Force a build against libiscsi. If libiscsi is not available
> the build will fail.
> * --disable-libiscsi
> Do not link against libiscsi, even if it is available.
>
> When linked with libiscsi, qemu gains support to access iscsi resources such as disks and cdrom directly, without having to make the devices visible to the host.
>
> You can specify devices using a iscsi url of the form :
> iscsi://[<username>[:<password>@]]<host>[:<port]/<target-iqn-name>/<lun>
> When using authentication, the password can optionally be set with
> LIBISCSI_CHAP_PASSWORD="password" to avoid it showing up in the process list
>
> Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
I have a few comments, but none of them are really critical and in
general the patch looks good to me.
So please let me know if you intend to send another version with the
comments addressed or if I should commit this version and you'll send
fixes/cleanups on top. I don't really mind at this point.
> ---
> Makefile.objs | 1 +
> block/iscsi.c | 596 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> configure | 31 +++
> trace-events | 7 +
> 4 files changed, 635 insertions(+), 0 deletions(-)
> create mode 100644 block/iscsi.c
>
> diff --git a/Makefile.objs b/Makefile.objs
> index a529a11..8c8e420 100644
> --- a/Makefile.objs
> +++ b/Makefile.objs
> @@ -36,6 +36,7 @@ block-nested-y += qed-check.o
> block-nested-y += parallels.o nbd.o blkdebug.o sheepdog.o blkverify.o
> block-nested-$(CONFIG_WIN32) += raw-win32.o
> block-nested-$(CONFIG_POSIX) += raw-posix.o
> +block-nested-$(CONFIG_LIBISCSI) += iscsi.o
> block-nested-$(CONFIG_CURL) += curl.o
> block-nested-$(CONFIG_RBD) += rbd.o
>
> diff --git a/block/iscsi.c b/block/iscsi.c
> new file mode 100644
> index 0000000..6517576
> --- /dev/null
> +++ b/block/iscsi.c
> @@ -0,0 +1,596 @@
> +/*
> + * QEMU Block driver for iSCSI images
> + *
> + * Copyright (c) 2010-2011 Ronnie Sahlberg <ronniesahlberg@gmail.com>
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a copy
> + * of this software and associated documentation files (the "Software"), to deal
> + * in the Software without restriction, including without limitation the rights
> + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> + * copies of the Software, and to permit persons to whom the Software is
> + * furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice shall be included in
> + * all copies or substantial portions of the Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> + * THE SOFTWARE.
> + */
> +
> +#include "config-host.h"
> +
> +#include <poll.h>
> +#include "sysemu.h"
I doubt that you really need sysemu.h. If you did, I think you couldn't
successfully build qemu-img and qemu-io.
> +#include "qemu-common.h"
> +#include "qemu-error.h"
> +#include "block_int.h"
> +#include "trace.h"
> +
> +#include <iscsi/iscsi.h>
> +#include <iscsi/scsi-lowlevel.h>
> +
> +
> +typedef struct IscsiLun {
> + struct iscsi_context *iscsi;
> + int lun;
> + int block_size;
> + unsigned long num_blocks;
> +} IscsiLun;
> +
> +typedef struct IscsiAIOCB {
> + BlockDriverAIOCB common;
> + QEMUIOVector *qiov;
> + QEMUBH *bh;
> + IscsiLun *iscsilun;
> + struct scsi_task *task;
> + uint8_t *buf;
> + int canceled;
> + int status;
> + size_t read_size;
> + size_t read_offset;
> +} IscsiAIOCB;
> +
> +struct IscsiTask {
> + IscsiLun *iscsilun;
> + int status;
> + int complete;
> +};
> +
> +static void
> +iscsi_abort_task_cb(struct iscsi_context *iscsi, int status, void *command_data,
> + void *private_data)
> +{
> +}
> +
> +static void
> +iscsi_aio_cancel(BlockDriverAIOCB *blockacb)
> +{
> + IscsiAIOCB *acb = (IscsiAIOCB *)blockacb;
> + IscsiLun *iscsilun = acb->iscsilun;
> +
> + acb->status = -ECANCELED;
> + acb->common.cb(acb->common.opaque, acb->status);
> + acb->canceled = 1;
Is acb->status == -ECANCELED redundant with acb->canceled == 1?
In some places you check the former, in other place the latter, and I
don't understand the difference.
> +
> + /* send a task mgmt call to the target to cancel the task on the target */
> + iscsi_task_mgmt_abort_task_async(iscsilun->iscsi, acb->task,
> + iscsi_abort_task_cb, NULL);
> +
> + /* then also cancel the task locally in libiscsi */
> + iscsi_scsi_task_cancel(iscsilun->iscsi, acb->task);
> +}
> +
> +static AIOPool iscsi_aio_pool = {
> + .aiocb_size = sizeof(IscsiAIOCB),
> + .cancel = iscsi_aio_cancel,
> +};
> +
> +
> +static void iscsi_process_read(void *arg);
> +static void iscsi_process_write(void *arg);
> +
> +static int iscsi_process_flush(void *arg)
> +{
> + IscsiLun *iscsilun = arg;
> +
> + return iscsi_queue_length(iscsilun->iscsi) > 0;
> +}
> +
> +static void
> +iscsi_set_events(IscsiLun *iscsilun)
> +{
> + struct iscsi_context *iscsi = iscsilun->iscsi;
> +
> + qemu_aio_set_fd_handler(iscsi_get_fd(iscsi), iscsi_process_read,
> + (iscsi_which_events(iscsi) & POLLOUT)
> + ? iscsi_process_write : NULL,
> + iscsi_process_flush, NULL, iscsilun);
> +}
> +
> +static void
> +iscsi_process_read(void *arg)
> +{
> + IscsiLun *iscsilun = arg;
> + struct iscsi_context *iscsi = iscsilun->iscsi;
> +
> + iscsi_service(iscsi, POLLIN);
> + iscsi_set_events(iscsilun);
> +}
> +
> +static void
> +iscsi_process_write(void *arg)
> +{
> + IscsiLun *iscsilun = arg;
> + struct iscsi_context *iscsi = iscsilun->iscsi;
> +
> + iscsi_service(iscsi, POLLOUT);
> + iscsi_set_events(iscsilun);
> +}
> +
> +
> +static int
> +iscsi_schedule_bh(QEMUBHFunc *cb, IscsiAIOCB *acb)
> +{
> + acb->bh = qemu_bh_new(cb, acb);
> + if (!acb->bh) {
> + error_report("oom: could not create iscsi bh");
> + return -EIO;
> + }
> +
> + qemu_bh_schedule(acb->bh);
> + return 0;
> +}
> +
> +static void
> +iscsi_readv_writev_bh_cb(void *p)
> +{
> + IscsiAIOCB *acb = p;
> +
> + qemu_bh_delete(acb->bh);
> +
> + if (acb->status != -ECANCELED) {
> + acb->common.cb(acb->common.opaque, acb->status);
> + }
> +
> + qemu_aio_release(acb);
> +}
> +
> +
> +static void
> +iscsi_aio_write10_cb(struct iscsi_context *iscsi, int status,
> + void *command_data, void *opaque)
> +{
> + IscsiAIOCB *acb = opaque;
> +
> + trace_iscsi_aio_write10_cb(iscsi, status, acb, acb->canceled);
> +
> + g_free(acb->buf);
> +
> + if (acb->canceled != 0) {
> + qemu_aio_release(acb);
> + scsi_free_scsi_task(acb->task);
> + acb->task = NULL;
> + return;
> + }
> +
> + acb->status = 0;
> + if (status < 0) {
> + error_report("Failed to write10 data to iSCSI lun. %s",
> + iscsi_get_error(iscsi));
> + acb->status = -EIO;
> + }
> +
> + iscsi_schedule_bh(iscsi_readv_writev_bh_cb, acb);
> + scsi_free_scsi_task(acb->task);
> + acb->task = NULL;
> +}
> +
> +static int64_t sector_qemu2lun(int64_t sector, IscsiLun *iscsilun)
> +{
> + return sector * BDRV_SECTOR_SIZE / iscsilun->block_size;
> +}
> +
> +static BlockDriverAIOCB *
> +iscsi_aio_writev(BlockDriverState *bs, int64_t sector_num,
> + QEMUIOVector *qiov, int nb_sectors,
> + BlockDriverCompletionFunc *cb,
> + void *opaque)
> +{
> + IscsiLun *iscsilun = bs->opaque;
> + struct iscsi_context *iscsi = iscsilun->iscsi;
> + IscsiAIOCB *acb;
> + size_t size;
> + int fua = 0;
> +
> + /* set FUA on writes when cache mode is write through */
> + if (!(bs->open_flags & BDRV_O_CACHE_WB)) {
> + fua = 1;
> + }
> +
> + acb = qemu_aio_get(&iscsi_aio_pool, bs, cb, opaque);
> + trace_iscsi_aio_writev(iscsi, sector_num, nb_sectors, opaque, acb);
> + if (!acb) {
> + return NULL;
> + }
> +
> + acb->iscsilun = iscsilun;
> + acb->qiov = qiov;
> +
> + acb->canceled = 0;
> +
> + /* XXX we should pass the iovec to write10 to avoid the extra copy */
> + /* this will allow us to get rid of 'buf' completely */
> + size = nb_sectors * BDRV_SECTOR_SIZE;
> + acb->buf = g_malloc(size);
> + qemu_iovec_to_buffer(acb->qiov, acb->buf);
> + acb->task = iscsi_write10_task(iscsi, iscsilun->lun, acb->buf, size,
> + sector_qemu2lun(sector_num, iscsilun),
> + fua, 0, iscsilun->block_size,
> + iscsi_aio_write10_cb, acb);
> + if (acb->task == NULL) {
> + error_report("iSCSI: Failed to send write10 command. %s",
> + iscsi_get_error(iscsi));
> + g_free(acb->buf);
> + qemu_aio_release(acb);
> + return NULL;
> + }
> +
> + iscsi_set_events(iscsilun);
> +
> + return &acb->common;
> +}
> +
> +static void
> +iscsi_aio_read10_cb(struct iscsi_context *iscsi, int status,
> + void *command_data, void *opaque)
> +{
> + IscsiAIOCB *acb = opaque;
> +
> + trace_iscsi_aio_read10_cb(iscsi, status, acb, acb->canceled);
> +
> + if (acb->canceled != 0) {
> + qemu_aio_release(acb);
> + scsi_free_scsi_task(acb->task);
> + acb->task = NULL;
> + return;
> + }
> +
> + acb->status = 0;
> + if (status != 0) {
> + error_report("Failed to read10 data from iSCSI lun. %s",
> + iscsi_get_error(iscsi));
> + acb->status = -EIO;
> + }
> +
> + iscsi_schedule_bh(iscsi_readv_writev_bh_cb, acb);
> + scsi_free_scsi_task(acb->task);
> + acb->task = NULL;
> +}
> +
> +static BlockDriverAIOCB *
> +iscsi_aio_readv(BlockDriverState *bs, int64_t sector_num,
> + QEMUIOVector *qiov, int nb_sectors,
> + BlockDriverCompletionFunc *cb,
> + void *opaque)
> +{
> + IscsiLun *iscsilun = bs->opaque;
> + struct iscsi_context *iscsi = iscsilun->iscsi;
> + IscsiAIOCB *acb;
> + size_t qemu_read_size, lun_read_size;
> + int i;
> +
> + qemu_read_size = BDRV_SECTOR_SIZE * (size_t)nb_sectors;
> +
> + acb = qemu_aio_get(&iscsi_aio_pool, bs, cb, opaque);
> + trace_iscsi_aio_readv(iscsi, sector_num, nb_sectors, opaque, acb);
> + if (!acb) {
> + return NULL;
> + }
> +
> + acb->iscsilun = iscsilun;
> + acb->qiov = qiov;
> +
> + acb->canceled = 0;
> + acb->read_size = qemu_read_size;
> + acb->buf = NULL;
> +
> + /* If LUN blocksize is bigger than BDRV_BLOCK_SIZE a read from QEMU
> + * may be misaligned to the LUN, so we may need to read some extra
> + * data.
> + */
> + acb->read_offset = 0;
> + if (iscsilun->block_size > BDRV_SECTOR_SIZE) {
> + uint64_t bdrv_offset = BDRV_SECTOR_SIZE * sector_num;
> +
> + acb->read_offset = bdrv_offset % iscsilun->block_size;
> + }
> +
> + lun_read_size = (qemu_read_size + iscsilun->block_size
> + + acb->read_offset - 1)
> + / iscsilun->block_size * iscsilun->block_size;
> + acb->task = iscsi_read10_task(iscsi, iscsilun->lun,
> + sector_qemu2lun(sector_num, iscsilun),
> + lun_read_size, iscsilun->block_size,
> + iscsi_aio_read10_cb, acb);
> + if (acb->task == NULL) {
> + error_report("iSCSI: Failed to send read10 command. %s",
> + iscsi_get_error(iscsi));
> + qemu_aio_release(acb);
> + return NULL;
> + }
> +
> + for (i = 0; i < acb->qiov->niov; i++) {
> + scsi_task_add_data_in_buffer(acb->task,
> + acb->qiov->iov[i].iov_len,
> + acb->qiov->iov[i].iov_base);
> + }
> +
> + iscsi_set_events(iscsilun);
> +
> + return &acb->common;
> +}
> +
> +
> +static void
> +iscsi_synccache10_cb(struct iscsi_context *iscsi, int status,
> + void *command_data, void *opaque)
> +{
> + IscsiAIOCB *acb = opaque;
> +
> + if (acb->canceled != 0) {
> + qemu_aio_release(acb);
> + scsi_free_scsi_task(acb->task);
> + acb->task = NULL;
> + return;
> + }
> +
> + acb->status = 0;
> + if (status < 0) {
> + error_report("Failed to sync10 data on iSCSI lun. %s",
> + iscsi_get_error(iscsi));
> + acb->status = -EIO;
> + }
> +
> + iscsi_schedule_bh(iscsi_readv_writev_bh_cb, acb);
> + scsi_free_scsi_task(acb->task);
> + acb->task = NULL;
> +}
> +
> +static BlockDriverAIOCB *
> +iscsi_aio_flush(BlockDriverState *bs,
> + BlockDriverCompletionFunc *cb, void *opaque)
> +{
> + IscsiLun *iscsilun = bs->opaque;
> + struct iscsi_context *iscsi = iscsilun->iscsi;
> + IscsiAIOCB *acb;
> +
> + acb = qemu_aio_get(&iscsi_aio_pool, bs, cb, opaque);
> + if (!acb) {
> + return NULL;
> + }
qemu_aio_get() never returns NULL, so this check is unnecessary.
> +
> + acb->iscsilun = iscsilun;
> + acb->canceled = 0;
> +
> + acb->task = iscsi_synchronizecache10_task(iscsi, iscsilun->lun,
> + 0, 0, 0, 0,
> + iscsi_synccache10_cb,
> + acb);
> + if (acb->task == NULL) {
> + error_report("iSCSI: Failed to send synchronizecache10 command. %s",
> + iscsi_get_error(iscsi));
> + qemu_aio_release(acb);
> + return NULL;
> + }
> +
> + iscsi_set_events(iscsilun);
> +
> + return &acb->common;
> +}
> +
> +static int64_t
> +iscsi_getlength(BlockDriverState *bs)
> +{
> + IscsiLun *iscsilun = bs->opaque;
> + int64_t len;
> +
> + len = iscsilun->num_blocks;
> + len *= iscsilun->block_size;
> +
> + return len;
> +}
> +
> +static void
> +iscsi_readcapacity10_cb(struct iscsi_context *iscsi, int status,
> + void *command_data, void *opaque)
> +{
> + struct IscsiTask *itask = opaque;
> + struct scsi_readcapacity10 *rc10;
> + struct scsi_task *task = command_data;
> +
> + if (status != 0) {
> + error_report("iSCSI: Failed to read capacity of iSCSI lun. %s",
> + iscsi_get_error(iscsi));
> + itask->status = 1;
> + itask->complete = 1;
> + scsi_free_scsi_task(task);
> + return;
> + }
> +
> + rc10 = scsi_datain_unmarshall(task);
> + if (rc10 == NULL) {
> + error_report("iSCSI: Failed to unmarshall readcapacity10 data.");
> + itask->status = 1;
> + itask->complete = 1;
> + scsi_free_scsi_task(task);
> + return;
> + }
> +
> + itask->iscsilun->block_size = rc10->block_size;
> + itask->iscsilun->num_blocks = rc10->lba;
I think you should also set bs->total_sectors.
> +
> + itask->status = 0;
> + itask->complete = 1;
> + scsi_free_scsi_task(task);
> +}
> +
> +
> +static void
> +iscsi_connect_cb(struct iscsi_context *iscsi, int status, void *command_data,
> + void *opaque)
> +{
> + struct IscsiTask *itask = opaque;
> + struct scsi_task *task;
> +
> + if (status != 0) {
> + itask->status = 1;
> + itask->complete = 1;
> + return;
> + }
> +
> + task = iscsi_readcapacity10_task(iscsi, itask->iscsilun->lun, 0, 0,
> + iscsi_readcapacity10_cb, opaque);
> + if (task == NULL) {
> + error_report("iSCSI: failed to send readcapacity command.");
> + itask->status = 1;
> + itask->complete = 1;
> + return;
> + }
> +}
> +
> +/*
> + * We support iscsi url's on the form
> + * iscsi://[<username>%<password>@]<host>[:<port>]/<targetname>/<lun>
> + */
> +static int iscsi_open(BlockDriverState *bs, const char *filename, int flags)
> +{
> + IscsiLun *iscsilun = bs->opaque;
> + struct iscsi_context *iscsi = NULL;
> + struct iscsi_url *iscsi_url = NULL;
> + struct IscsiTask task;
> + int ret;
> +
> + if ((BDRV_SECTOR_SIZE % 512) != 0) {
> + error_report("iSCSI: Invalid BDRV_SECTOR_SIZE. "
> + "BDRV_SECTOR_SIZE(%lld) is not a multiple "
> + "of 512", BDRV_SECTOR_SIZE);
> + return -EINVAL;
> + }
> +
> + memset(iscsilun, 0, sizeof(IscsiLun));
> +
> + /* Should really append the KVM name after the ':' here */
> + iscsi = iscsi_create_context("iqn.2008-11.org.linux-kvm:");
> + if (iscsi == NULL) {
> + error_report("iSCSI: Failed to create iSCSI context.");
> + ret = -ENOMEM;
> + goto failed;
> + }
> +
> + iscsi_url = iscsi_parse_full_url(iscsi, filename);
> + if (iscsi_url == NULL) {
> + error_report("Failed to parse URL : %s %s", filename,
> + iscsi_get_error(iscsi));
> + ret = -EINVAL;
> + goto failed;
> + }
> +
> + if (iscsi_set_targetname(iscsi, iscsi_url->target)) {
> + error_report("iSCSI: Failed to set target name.");
> + ret = -EINVAL;
> + goto failed;
> + }
> +
> + if (iscsi_url->user != NULL) {
> + ret = iscsi_set_initiator_username_pwd(iscsi, iscsi_url->user,
> + iscsi_url->passwd);
> + if (ret != 0) {
> + error_report("Failed to set initiator username and password");
> + ret = -EINVAL;
> + goto failed;
> + }
> + }
> + if (iscsi_set_session_type(iscsi, ISCSI_SESSION_NORMAL) != 0) {
> + error_report("iSCSI: Failed to set session type to normal.");
> + ret = -EINVAL;
> + goto failed;
> + }
> +
> + iscsi_set_header_digest(iscsi, ISCSI_HEADER_DIGEST_NONE_CRC32C);
> +
> + task.iscsilun = iscsilun;
> + task.status = 0;
> + task.complete = 0;
> +
> + iscsilun->iscsi = iscsi;
> + iscsilun->lun = iscsi_url->lun;
> +
> + if (iscsi_full_connect_async(iscsi, iscsi_url->portal, iscsi_url->lun,
> + iscsi_connect_cb, &task)
> + != 0) {
> + error_report("iSCSI: Failed to start async connect.");
> + ret = -EINVAL;
> + goto failed;
> + }
> +
> + while (!task.complete) {
> + iscsi_set_events(iscsilun);
> + qemu_aio_wait();
> + }
> + if (task.status != 0) {
> + error_report("iSCSI: Failed to connect to LUN : %s",
> + iscsi_get_error(iscsi));
> + ret = -EINVAL;
> + goto failed;
> + }
> +
> + return 0;
> +
> +failed:
> + if (iscsi_url != NULL) {
> + iscsi_destroy_url(iscsi_url);
> + }
iscsi_destroy_url() is only ever called here. Do we leak it in the
normal path?
> + if (iscsi != NULL) {
> + iscsi_destroy_context(iscsi);
> + }
> + memset(iscsilun, 0, sizeof(IscsiLun));
> + return ret;
> +}
> +
> +static void iscsi_close(BlockDriverState *bs)
> +{
> + IscsiLun *iscsilun = bs->opaque;
> + struct iscsi_context *iscsi = iscsilun->iscsi;
> +
> + qemu_aio_set_fd_handler(iscsi_get_fd(iscsi), NULL, NULL, NULL, NULL, NULL);
> + iscsi_destroy_context(iscsi);
> + memset(iscsilun, 0, sizeof(IscsiLun));
> +}
> +
> +static BlockDriver bdrv_iscsi = {
> + .format_name = "iscsi",
> + .protocol_name = "iscsi",
> +
> + .instance_size = sizeof(IscsiLun),
> + .bdrv_file_open = iscsi_open,
> + .bdrv_close = iscsi_close,
> +
> + .bdrv_getlength = iscsi_getlength,
> +
> + .bdrv_aio_readv = iscsi_aio_readv,
> + .bdrv_aio_writev = iscsi_aio_writev,
> + .bdrv_aio_flush = iscsi_aio_flush,
> +};
> +
> +static void iscsi_block_init(void)
> +{
> + bdrv_register(&bdrv_iscsi);
> +}
> +
> +block_init(iscsi_block_init);
> +
> diff --git a/configure b/configure
> index 348f36a..a2c30e1 100755
> --- a/configure
> +++ b/configure
> @@ -182,6 +182,7 @@ usb_redir=""
> opengl=""
> zlib="yes"
> guest_agent="yes"
> +libiscsi=""
>
> # parse CC options first
> for opt do
> @@ -651,6 +652,10 @@ for opt do
> ;;
> --enable-spice) spice="yes"
> ;;
> + --disable-libiscsi) libiscsi="no"
> + ;;
> + --enable-libiscsi) libiscsi="yes"
> + ;;
> --enable-profiler) profiler="yes"
> ;;
> --enable-cocoa)
> @@ -1037,6 +1042,8 @@ echo " Default:trace-<pid>"
> echo " --disable-spice disable spice"
> echo " --enable-spice enable spice"
> echo " --enable-rbd enable building the rados block device (rbd)"
> +echo " --disable-libiscsi disable iscsi support"
> +echo " --enable-libiscsi enable iscsi support"
> echo " --disable-smartcard disable smartcard support"
> echo " --enable-smartcard enable smartcard support"
> echo " --disable-smartcard-nss disable smartcard nss support"
> @@ -2326,6 +2333,25 @@ if compile_prog "" "" ; then
> fi
>
> ##########################################
> +# Do we have libiscsi
> +if test "$libiscsi" != "no" ; then
> + cat > $TMPC << EOF
> +#include <iscsi/iscsi.h>
> +int main(void) { iscsi_create_context(""); return 0; }
> +EOF
> + if compile_prog "-Werror" "-liscsi" ; then
> + libiscsi="yes"
> + LIBS="$LIBS -liscsi"
> + else
> + if test "$libiscsi" = "yes" ; then
> + feature_not_found "libiscsi"
> + fi
> + libiscsi="no"
> + fi
> +fi
> +
> +
> +##########################################
> # Do we need librt
> cat > $TMPC <<EOF
> #include <signal.h>
> @@ -2727,6 +2753,7 @@ echo "xfsctl support $xfs"
> echo "nss used $smartcard_nss"
> echo "usb net redir $usb_redir"
> echo "OpenGL support $opengl"
> +echo "libiscsi support $libiscsi"
> echo "build guest agent $guest_agent"
>
> if test "$sdl_too_old" = "yes"; then
> @@ -3028,6 +3055,10 @@ if test "$opengl" = "yes" ; then
> echo "CONFIG_OPENGL=y" >> $config_host_mak
> fi
>
> +if test "$libiscsi" = "yes" ; then
> + echo "CONFIG_LIBISCSI=y" >> $config_host_mak
> +fi
> +
> # XXX: suppress that
> if [ "$bsd" = "yes" ] ; then
> echo "CONFIG_BSD=y" >> $config_host_mak
> diff --git a/trace-events b/trace-events
> index 3fdd60f..ce68516 100644
> --- a/trace-events
> +++ b/trace-events
> @@ -494,3 +494,10 @@ escc_sunkbd_event_in(int ch) "Untranslated keycode %2.2x"
> escc_sunkbd_event_out(int ch) "Translated keycode %2.2x"
> escc_kbd_command(int val) "Command %d"
> escc_sunmouse_event(int dx, int dy, int buttons_state) "dx=%d dy=%d buttons=%01x"
> +
> +# block/iscsi.c
> +iscsi_aio_write10_cb(void *iscsi, int status, void *acb, int canceled) "iscsi %p status %d acb %p canceled %d"
> +iscsi_aio_writev(void *iscsi, int64_t sector_num, int nb_sectors, void *opaque, void *acb) "iscsi %p sector_num %"PRId64" nb_sectors %d opaque %p acb %p"
> +iscsi_aio_read10_cb(void *iscsi, int status, void *acb, int canceled) "iscsi %p status %d acb %p canceled %d"
> +iscsi_aio_readv(void *iscsi, int64_t sector_num, int nb_sectors, void *opaque, void *acb) "iscsi %p sector_num %"PRId64" nb_sectors %d opaque %p acb %p"
> +
Kevin
^ permalink raw reply
* [U-Boot] From Mrs. Alisa Losif
From: MADAM @ 2011-10-24 13:31 UTC (permalink / raw)
To: u-boot
Dear Beloved,
?
? I am Mrs. Alisa Losif and i have been suffering from ovarian cancer disease and the doctor says that i have just more two days to live. i am from (eastern Province) Russian? but base in Africa Burkina Faso since eight years ago as a business woman dealing with gold exportation.
?
?? Now that i am about to end the race like this, without any family members and no child. i have $3Million US Dollars in Africa Development Bank (ADB) Burkina Faso which i instructed the bank to give? it? to St Andrews Missionary Home in Burkina Faso .
?? But my mind is not at rest because i am writing this letter now through the help of my computer beside my sick bed. i also have $4.5Million US Dollars at Ecobank here in Burkina Faso and i instructed the bank to transfer the money to the foreigner that will apply to the bank after i have gone that they should release the fund to you, but you will assure me that you will take 50% of the money and give 50% to the motherlessbabyhomes, charity homes. In your country for my heart to rest.? YOU HAVE TO CONTACT THE BANK THROUGH THIS EMAIL ADDRESS: ( ecoban.kfaso at blumail.org)
?
Yours fairly friend
?Thanks from
Madam Alisa Losif?
?
^ permalink raw reply
* Re: [CONSOLIDATED PULL 23/27] wget: Add recipe from OE
From: Richard Purdie @ 2011-10-24 13:25 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer
In-Reply-To: <2c5ad68e4c5f715c91760839f482deff44fa9f06.1319394187.git.sgw@linux.intel.com>
> diff --git a/meta/recipes-extended/wget/wget.inc b/meta/recipes-extended/wget/wget.inc
> new file mode 100644
> index 0000000..c0d9ba9
> --- /dev/null
> +++ b/meta/recipes-extended/wget/wget.inc
> @@ -0,0 +1,40 @@
> +DESCRIPTION = "A console URL download utility featuring HTTP, FTP, and more."
> +SECTION = "console/network"
> +DEPENDS = ""
> +DEPENDS_shr = "gnutls"
Hmm. See below.
> +LICENSE = "GPL"
Which GPL?
> +LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
> +
> +
> +INC_PR = "r9"
> +
> +S = "${WORKDIR}/wget-${PV}"
> +
> +inherit autotools gettext
> +
> +# Disable checking for SSL since that searches the system paths
> +EXTRA_OECONF = "--enable-ipv6 --without-ssl"
> +
> +# Enable SSL it's usefull
> +EXTRA_OECONF_shr = "--enable-ipv6 --with-ssl=gnutls"
> +# The unslung kernel does not support ipv6
> +EXTRA_OECONF_unslung = "--without-ssl"
> +# SlugOS kernels do not support ipv6. Can be loaded as a module.
> +EXTRA_OECONF_slugos = "--without-ssl"
So we go to interesting lengths here to customise this under a variety
of conditions...
> +inherit autotools update-alternatives
> +
> +EXTRA_OECONF = "--with-libc"
... and then we overwrite half of it here. This needs cleaning up before
it can merge. We could convert it to make these config items
PACKAGECONFIG if people need to customise this.
>+do_configure() {
>+ autotools_do_configure
>+}
This looks rather pointless?
Cheers,
Richard
^ permalink raw reply
* Perf support for OMAP4
From: Will Deacon @ 2011-10-24 13:32 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <CACVXFVPxVQmAGmbhCH6KSogeQC3EcCseoApNABfmqWmGePpoOA@mail.gmail.com>
Hello,
On Thu, Sep 29, 2011 at 08:20:53AM +0100, Ming Lei wrote:
> On Wed, Sep 28, 2011 at 11:54 PM, Will Deacon <will.deacon@arm.com> wrote:
> > Hi Tom,
> >
> > I can't see your OMAP4 Perf/PMU patches from here:
> >
> > http://lists.infradead.org/pipermail/linux-arm-kernel/2011-March/045283.html
> >
> > in mainline or next.
> >
> > Are you still pushing these or did you get blocked awaiting feedback?
>
> OK, I will rebase the patch against -next tree and resend it later.
Ping? I'd really like to get this tested and queued for 3.3 as it's
currently blocking hardware perf-events on Pandaboard.
Will
^ permalink raw reply
* Re: Problem with TeVii S-470
From: Josu Lazkano @ 2011-10-24 13:32 UTC (permalink / raw)
To: Mike Mironov; +Cc: Linux Media Mailing List
In-Reply-To: <4EA56322.7040609@darkmike.ru>
2011/10/24 Mike Mironov <subscribe@darkmike.ru>:
> 24.10.2011 15:29, Josu Lazkano пишет:
>>
>> 2011/10/24 Mike Mironov<subscribe@darkmike.ru>:
>>>
>>> Hello!
>>>
>>> I have this card http://www.linuxtv.org/wiki/index.php/TeVii_S470
>>>
>>> I try to use it under Debian Squeeze, but I can't get channel data from
>>> it.
>>>
>>> I try to use drivers from 2.6.38, 2.6.39 kernels, s2-liplianin drivers
>>> with
>>> 2.6.32 kernel, last linux-media drivers with 2.6.32
>>>
>>> With all drivers I can scan channels, but then a I'll try to lock channel
>>> I
>>> get some error in syslog (module cx23885 loaded with debug=1)
>>>
>>> cx23885[0]/0: [f373ec80/27] cx23885_buf_queue - append to active
>>> cx23885[0]/0: [f373ebc0/28] wakeup reg=477 buf=477
>>> cx23885[0]/0: queue is not empty - append to active
>>>
>>> and finally a lot of
>>>
>>> cx23885[0]/0: [f42c4240/6] timeout - dma=0x03c5c000
>>> cx23885[0]/0: [f42c4180/7] timeout - dma=0x3322b000
>>> cx23885[0]/0: [f4374440/8] timeout - dma=0x33048000
>>> cx23885[0]/0: [f4374140/9] timeout - dma=0x03d68000
>>>
>>> In other machine this work under Windows. Under Linux I have same
>>> effects.
>>>
>>> It's problem in drivers or in card? That addition information need to
>>> resolve this problem?
>>
>> Hello Mike, I have same device on same OS, try this:
>> mkdir /usr/local/src/dvbcd /usr/local/src/dvbwget
>> http://tevii.com/100315_Beta_linux_tevii_ds3000.rarunrar x
>> 100315_Beta_linux_tevii_ds3000.rarcp dvb-fe-ds3000.fw
>> /lib/firmware/tar xjvf linux-tevii-ds3000.tar.bz2cd
>> linux-tevii-ds3000make&& make install
>> Regards.
>
> I'll try use this drivers today, but for this devices drivers exist in
> kernel from 2.6.33. So it must work with in-kernel drivers.
>
> P.S. Firmware from this archive I put in /lib/firmware before all tests.
> $ md5sum /lib/firmware/dvb-fe-ds3000.fw
> a32d17910c4f370073f9346e71d34b80 /lib/firmware/dvb-fe-ds3000.fw
>
Hello again, actually, I am using this method for Tevii S660 and S470:
apt-get install linux-headers-`uname -r` build-essential
mkdir /usr/local/src/dvb
cd /usr/local/src/dvb
wget http://mercurial.intuxication.org/hg/s2-liplianin/archive/tip.zip
unzip tip.zip
cd s2-liplianin-0b7d3cc65161
make CONFIG_DVB_FIREDTV:=n
make install
Both methods works for me on a Debian Squeeze (2.6.32). Here more
info: http://linuxtv.org/wiki/index.php/TeVii_S470
Regards.
--
Josu Lazkano
^ permalink raw reply
* Re: NFS4 BAD_STATEID loop (kernel 3.0)
From: Trond Myklebust @ 2011-10-24 13:32 UTC (permalink / raw)
To: David Flynn; +Cc: linux-nfs
In-Reply-To: <20111024131734.GE32587@rd.bbc.co.uk>
On Mon, 2011-10-24 at 13:17 +0000, David Flynn wrote:
> * Trond Myklebust (Trond.Myklebust@netapp.com) wrote:
> > We should in principle be able to recover a BAD_STATEID error by running
> > the state recovery thread. It's a shame that the machine was rebooted,
> > but does your syslog trace perhaps show any state recovery thread
> > errors?
>
> There were no other nfs related messages reported between the initial
> blocked task and rebooting the machine later. Additionally, there were
> no nfs related messages from bootup of the machine until the blocked
> task.
>
> One thing that may be of interest is that the user in question with the
> blocked task had hit their quota hard limit. (It was the same user that
> had the issue i reported earlier too on the same filesystem).
>
> Kind regards,
> ..david
I'm assuming then that your network trace showed no sign of any OPEN
calls of that particular file, just retries of the WRITE?
--
Trond Myklebust
Linux NFS client maintainer
NetApp
Trond.Myklebust@netapp.com
www.netapp.com
^ permalink raw reply
* [PATCH v2 BlueZ] Add new command and event for LTK storage support
From: Vinicius Costa Gomes @ 2011-10-24 13:33 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Vinicius Costa Gomes
In-Reply-To: <1319459187-11092-1-git-send-email-vinicius.gomes@openbossa.org>
This documents the new command and event that are to be added to
the Management API to add support for persistent pairing of LE
devices.
---
Changes:
- New command code, because new commands were added;
- Removed the Debug Keys parameter;
doc/mgmt-api.txt | 32 ++++++++++++++++++++++++++++++++
1 files changed, 32 insertions(+), 0 deletions(-)
diff --git a/doc/mgmt-api.txt b/doc/mgmt-api.txt
index 57771b4..9e158a1 100644
--- a/doc/mgmt-api.txt
+++ b/doc/mgmt-api.txt
@@ -382,6 +382,23 @@ Name Information Command
expected for each Device Found event with the Confirm Name
flag set.
+Load Long Term Keys Command
+===========================
+
+ Command Code: 0x0023
+ Controller Index: <controller id>
+ Command Parameters: Key Count (2 Octets)
+ Key1 {
+ Address (6 Octets)
+ PIN_Length (1 Octet)
+ Encryption Size (1 Octet)
+ Enc. Diversifier (2 Octets)
+ Random Number (8 Octets)
+ Value (16 Octets)
+ }
+ Key2 { }
+ ...
+
Read Tracing Buffer Size Command
================================
@@ -638,3 +655,18 @@ Device Unblocked Event
Event Code 0x00016
Controller Index <controller id>
Event Parameters Address (6 Octets)
+
+New Long Term Key Event
+=======================
+
+Event Code 0x0017
+Controller Index <controller id>
+Event Parameters Store Hint (1 Octet)
+ Key {
+ Address (6 Octets)
+ PIN_Length (1 Octet)
+ Encryption Size (1 Octet)
+ Enc. Diversifier (2 Octets)
+ Random Number (8 Octets)
+ Value (16 Octets)
+ }
--
1.7.7
^ permalink raw reply related
* callhistory plug-in
From: Rajkumar Athimoolam @ 2011-10-24 13:35 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 557 bytes --]
Hi all,
I have been looking for some solution to store the call history information from oFono in EDS.
In ofono-paper.txt it is mentioned as "Moblin uses oFono plugins to store
all call history information within Evolution Data Server."
But in ofono source code I could only see the history plug-in interfaces.
Where I can find the upstream plug-in code for call history storage in EDS?
Any thing related to this direction would be of great help. Thanks
Please excuse if it is already somewhere discussed in the mail archives
Regards,
Raj
[-- Attachment #2: attachment.html --]
[-- Type: text/html, Size: 1832 bytes --]
^ permalink raw reply
* Re: [linux-lvm] Remove a LUN from a LVM mirror cause logical volume not response
From: Bryn M. Reeves @ 2011-10-24 13:35 UTC (permalink / raw)
To: LVM general discussion and development; +Cc: Matecki, Lukas, Alexander Lyakas
In-Reply-To: <02292FBD45CF4C40AA7104EA7B291B7002A1DBA130@mxb-zv04.LVRINTERN.LVR.DE>
On 10/24/2011 01:48 PM, Matecki, Lukas wrote:
> Second try this time with the right subject, sry Monday -.-
>
> Hallo List,
>
> We are using LVM with SAN and multipathd. I try to setup mirroring with LVM. So I do pv create on a mpath device. vgcreate, add the pv to the vg, create a lv and setup a mirror with this:
Bear in mind that if you are using multipath underneath a mirror then
you will need to configure multipath to not queue I/O when all paths to
a device fail (or to only do so for a limited number of retries).
Otherwise the system will queue all I/O and block accessing the side of
the mirror on the failed SAN.
> lvconvert -m1 vg<name>/lv<name> /dev/mapper/mpath0 --mirrorlog core
Using core may not be the best idea here since it will mean that you
have to resynchronize the mirror every time it is activated.
> My intention is to create a logical volume which can handle SAN Disk failure.
>
> But in this shown setup i get a error (unavailable logical volume) when one of the san LUNS is missing.
Can you paste the exact error you are getting? This doesn't sound like
any LVM2 error message that I'm familiar with.
Regards,
Bryn.
^ permalink raw reply
* [Buildroot] [PATCH v5] package: add opencv
From: Peter Korsgaard @ 2011-10-24 13:35 UTC (permalink / raw)
To: buildroot
In-Reply-To: <1319396325-9720-1-git-send-email-s.martin49@gmail.com>
>>>>> "Samuel" == Samuel Martin <s.martin49@gmail.com> writes:
Samuel> OpenCV is a free, open-source, cross-platform computer vision library
Samuel> Changelog:
Samuel> v1: initial submission
Samuel> v2: changes according to Thomas Petazonni's review:
Samuel> - remove obvious unneeded options
Samuel> - typo and style fixes
Samuel> - do not use 3RDPARTY_LIBS
Samuel> v3: changes according to Thomas Petazonni's review:
Samuel> - typo and style fixes
Samuel> - remove host package (not needed)
Samuel> v4: update CMAKETARGET call to follow the infra.
Samuel> v5: - add post install hooks (following Mike Davies' remarks):
Samuel> - do not install doc
Samuel> - do not install OpenCVConfig.cmake in the target
Samuel> - optionally install data in the target
Samuel> - remove the 'Build examples' option (only install source files)
Samuel> - disable precompiled header usage (automacally disabled when
Samuel> compiler size optimization is set)
Thanks, committed with some changes (see below)
Samuel> +menuconfig BR2_PACKAGE_OPENCV
I prefer config rather than yet another submenu.
Samuel> + bool "opencv"
Samuel> + select BR2_PACKAGE_ZLIB
opencv uses C++ and needs wchar, so you need to depend on
BR2_INSTALL_LIBSTDCPP / show a comment when they aren't available in the
toolchain.
Samuel> + help
Samuel> + OpenCV (Open Source Computer Vision) is a library of programming
Samuel> + functions for real time computer vision.
Samuel> +
Samuel> + http://opencv.willowgarage.com/wiki/
Samuel> +
Samuel> +if BR2_PACKAGE_OPENCV
Samuel> +
Samuel> +comment "Built targets"
Samuel> +
Samuel> +config BR2_PACKAGE_OPENCV_BUILD_NEW_PYTHON_SUPPORT
Samuel> + bool "Python support"
Samuel> + select BR2_PACKAGE_PYTHON
This should only be shown if python is enabled already, similar to the
gtk/qt options. It imho also belongs down there.
Samuel> +
Samuel> +config BR2_PACKAGE_OPENCV_BUILD_TESTS
Samuel> + bool "Tests"
config descriptions are normally in lower case.
Samuel> +
Samuel> +comment "Install options"
Samuel> +
Samuel> +config BR2_PACKAGE_OPENCV_INSTALL_DATA
Samuel> + bool "Install data"
I made this "install extra data" to make it clear that this isn't
necessarily needed.
Samuel> + help
Samuel> + Install various data that is used by cv libraries and/or demo
Samuel> + applications, specifically for haarcascades and lbpcascades features.
Samuel> +
Samuel> + For further information: see OpenCV documentation.
Samuel> +
Samuel> +comment "Build options"
Samuel> +
Samuel> +config BR2_PACKAGE_OPENCV_WITH_FFMPEG
Samuel> + bool "FFMPEG support"
Samuel> + select BR2_PACKAGE_FFMPEG
Samuel> + select BR2_PACKAGE_FFMPEG_SWSCALE
Samuel> + help
Samuel> + Use ffmpeg from the target system.
Samuel> +
Samuel> +config BR2_PACKAGE_OPENCV_WITH_GSTREAMER
Samuel> + bool "Gstreamer support"
Samuel> + select BR2_PACKAGE_GSTREAMER
Samuel> + select BR2_PACKAGE_GST_PLUGINS_BASE
Samuel> + select BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_APP
Samuel> +
Samuel> +config BR2_PACKAGE_OPENCV_WITH_GTK
Samuel> + bool "GTK support"
Samuel> + depends on BR2_PACKAGE_LIBGTK2 && BR2_PACKAGE_LIBGLIB2
Samuel> +
Samuel> +config BR2_PACKAGE_OPENCV_WITH_JPEG
Samuel> + bool "JPEG support"
Samuel> + select BR2_PACKAGE_JPEG
Samuel> + help
Samuel> + Use shared libjpeg from the target system.
Samuel> +
Samuel> +config BR2_PACKAGE_OPENCV_WITH_PNG
Samuel> + bool "PNG support"
Samuel> + select BR2_PACKAGE_LIBPNG
Samuel> + help
Samuel> + Use shared libpng from the target system.
Samuel> +
Samuel> +config BR2_PACKAGE_OPENCV_WITH_QT
Samuel> + bool "Qt Backend support"
Samuel> + select BR2_PACKAGE_QT
I moved this up under gtk.
Samuel> +
Samuel> +config BR2_PACKAGE_OPENCV_WITH_TIFF
Samuel> + bool "TIFF support"
Samuel> + select BR2_PACKAGE_TIFF
Samuel> + help
Samuel> + Use shared libtiff from the target system.
Samuel> +
Samuel> +config BR2_PACKAGE_OPENCV_WITH_V4L
Samuel> + bool "Video 4 Linux support"
Samuel> + select BR2_PACKAGE_LIBV4L
libv4l needs largefile support, so you need to depend on that / show a
comment if not available.
Samuel> + default y
Samuel> +
Samuel> +endif
Samuel> diff --git a/package/opencv/opencv.mk b/package/opencv/opencv.mk
Samuel> new file mode 100644
Samuel> index 0000000..48add1e
Samuel> --- /dev/null
Samuel> +++ b/package/opencv/opencv.mk
Samuel> @@ -0,0 +1,80 @@
Samuel> +#############################################################
Samuel> +#
Samuel> +# OpenCV (Open Source Computer Vision)
Samuel> +#
Samuel> +#############################################################
Samuel> +OPENCV_SERIES = 2.3
Samuel> +OPENCV_VERSION = $(OPENCV_SERIES).0
Samuel> +OPENCV_SITE = http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/project/opencvlibrary/opencv-unix/$(OPENCV_SERIES)
Samuel> +OPENCV_SOURCE = OpenCV-$(OPENCV_VERSION).tar.bz2
Samuel> +OPENCV_INSTALL_STAGING = YES
Samuel> +
Samuel> +# Build type
Samuel> +OPENCV_CONF_OPT += -DCMAKE_BUILD_TYPE=$(if $(BR2_ENABLE_DEBUG),Debug,Release)
While this works it looks quite different than other packages - We
normally do:
OPENCV_CONF_OPT += \
blah=.. \
blih=.. \
bloh=..
ifeq ($(BR2_PACKAGE_BLAH))
OPENCV_CONF_OPT += BLAH=on
OPENCV_DEPENDENCIES += blah
else
OPENCV_CONF_OPT += BLAH=OFF
endif
..
I've rewritten it to use that form.
Samuel> +define OPENCV_CLEAN_INSTALL_DOC
Samuel> + $(RM) -fr $(TARGET_DIR)/usr/share/opencv/doc
Samuel> +endef
This should only be done if BR2_HAVE_DOCUMENTATION isn't enabled.
Samuel> +
Samuel> +define OPENCV_CLEAN_INSTALL_CMAKE
Samuel> + $(RM) -fr $(TARGET_DIR)/usr/share/opencv/*.cmake
Samuel> +endef
This should only be done if cmake for the target isn't enabled.
Samuel> +
Samuel> +define OPENCV_CLEAN_INSTALL_DATA
Samuel> + $(RM) -fr $(TARGET_DIR)/usr/share/opencv/haarcascades \
Samuel> + $(TARGET_DIR)/usr/share/opencv/lbpcascades
Samuel> +endef
Samuel> +
Samuel> +OPENCV_POST_INSTALL_TARGET_HOOKS += OPENCV_CLEAN_INSTALL_DOC OPENCV_CLEAN_INSTALL_CMAKE
Samuel> +OPENCV_POST_INSTALL_TARGET_HOOKS += $(if $(BR2_PACKAGE_OPENCV_INSTALL_DATA),,OPENCV_CLEAN_INSTALL_DATA)
Samuel> +
Samuel> +OPENCV_POST_INSTALL_STAGING_HOOKS += OPENCV_CLEAN_INSTALL_DOC
Samuel> +OPENCV_POST_INSTALL_STAGING_HOOKS += $(if $(BR2_PACKAGE_OPENCV_INSTALL_DATA),,OPENCV_CLEAN_INSTALL_DATA)
It doesn't make sense to run these target hooks when staging gets
installed.
--
Bye, Peter Korsgaard
^ permalink raw reply
* Re: [BUG] Invalid file descriptor.
From: Luiz Augusto von Dentz @ 2011-10-24 13:36 UTC (permalink / raw)
To: Daniel Wagner; +Cc: Lucas De Marchi, linux-bluetooth
In-Reply-To: <4EA566BC.6070204@monom.org>
Hi Daniel,
On Mon, Oct 24, 2011 at 4:23 PM, Daniel Wagner <wagi@monom.org> wrote:
>>
>> What about the patch?
>
> Sure, I will do as soon I have fixed all outstanding ConnMan bugs I found
> just recently. In other words don't expect very soon this patch :)
Try with this:
diff --git a/audio/manager.c b/audio/manager.c
index 818451c..3103824 100644
--- a/audio/manager.c
+++ b/audio/manager.c
@@ -607,7 +607,6 @@ static void hf_io_cb(GIOChannel *chan, gpointer data)
if (perr < 0) {
DBG("Authorization denied!");
gateway_set_state(device, GATEWAY_STATE_DISCONNECTED);
- goto drop;
}
return;
--
Luiz Augusto von Dentz
^ permalink raw reply related
* [PATCH v2] regulator: max8649 Convert max8649 to use regmap api
From: Haojian Zhuang @ 2011-10-24 13:36 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1319462786-2602-1-git-send-email-jhbird.choi@gmail.com>
On Mon, Oct 24, 2011 at 9:26 PM, <jhbird.choi@gmail.com> wrote:
> From: Jonghwan Choi <jhbird.choi@gmail.com>
>
> Signed-off-by: Jonghwan Choi <jhbird.choi@gmail.com>
> ---
> ?drivers/regulator/Kconfig ? | ? ?1 +
> ?drivers/regulator/max8649.c | ?155 +++++++++++++++----------------------------
> ?2 files changed, 56 insertions(+), 100 deletions(-)
Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com>
^ permalink raw reply
* Re: [PATCH v2] regulator: max8649 Convert max8649 to use regmap api
From: Haojian Zhuang @ 2011-10-24 13:36 UTC (permalink / raw)
To: jhbird.choi
Cc: linux-arm-kernel, linux-kernel, Mark Brown, Liam Girdwood,
Haojian Zhuang
In-Reply-To: <1319462786-2602-1-git-send-email-jhbird.choi@gmail.com>
On Mon, Oct 24, 2011 at 9:26 PM, <jhbird.choi@gmail.com> wrote:
> From: Jonghwan Choi <jhbird.choi@gmail.com>
>
> Signed-off-by: Jonghwan Choi <jhbird.choi@gmail.com>
> ---
> drivers/regulator/Kconfig | 1 +
> drivers/regulator/max8649.c | 155 +++++++++++++++----------------------------
> 2 files changed, 56 insertions(+), 100 deletions(-)
Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com>
^ permalink raw reply
* [Buildroot] [git commit] package: add opencv
From: Peter Korsgaard @ 2011-10-24 13:36 UTC (permalink / raw)
To: buildroot
commit: http://git.buildroot.net/buildroot/commit/?id=0ca7b726683879f93032b348aba0759f0ef8b520
branch: http://git.buildroot.net/buildroot/commit/?id=refs/heads/master
OpenCV is a free, open-source, cross-platform computer vision library
[Peter: fix deps, misc cleanup]
Signed-off-by: Samuel Martin <s.martin49@gmail.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
---
package/Config.in | 1 +
package/opencv/Config.in | 85 +++++++++++++++++++++++++++++++
package/opencv/opencv.mk | 125 ++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 211 insertions(+), 0 deletions(-)
diff --git a/package/Config.in b/package/Config.in
index 3b2769d..c6ca350 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -297,6 +297,7 @@ source "package/libraw/Config.in"
source "package/librsvg/Config.in"
source "package/libsvgtiny/Config.in"
source "package/libungif/Config.in"
+source "package/opencv/Config.in"
source "package/pango/Config.in"
source "package/pixman/Config.in"
source "package/tiff/Config.in"
diff --git a/package/opencv/Config.in b/package/opencv/Config.in
new file mode 100644
index 0000000..1f454b6
--- /dev/null
+++ b/package/opencv/Config.in
@@ -0,0 +1,85 @@
+config BR2_PACKAGE_OPENCV
+ bool "opencv"
+ select BR2_PACKAGE_ZLIB
+ depends on BR2_INSTALL_LIBSTDCPP
+ depends on BR2_USE_WCHAR
+ help
+ OpenCV (Open Source Computer Vision) is a library of programming
+ functions for real time computer vision.
+
+ http://opencv.willowgarage.com/wiki/
+
+if BR2_PACKAGE_OPENCV
+
+config BR2_PACKAGE_OPENCV_BUILD_TESTS
+ bool "build tests"
+
+config BR2_PACKAGE_OPENCV_INSTALL_DATA
+ bool "install extra data"
+ help
+ Install various data that is used by cv libraries and/or demo
+ applications, specifically for haarcascades and lbpcascades
+ features.
+
+ For further information: see OpenCV documentation.
+
+comment "Build options"
+
+config BR2_PACKAGE_OPENCV_WITH_PYTHON
+ bool "python support"
+ depends on BR2_PACKAGE_PYTHON
+
+config BR2_PACKAGE_OPENCV_WITH_FFMPEG
+ bool "ffmpeg support"
+ select BR2_PACKAGE_FFMPEG
+ select BR2_PACKAGE_FFMPEG_SWSCALE
+ help
+ Use ffmpeg from the target system.
+
+config BR2_PACKAGE_OPENCV_WITH_GSTREAMER
+ bool "gstreamer support"
+ select BR2_PACKAGE_GSTREAMER
+ select BR2_PACKAGE_GST_PLUGINS_BASE
+ select BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_APP
+
+config BR2_PACKAGE_OPENCV_WITH_GTK
+ bool "gtk support"
+ depends on BR2_PACKAGE_LIBGTK2
+
+config BR2_PACKAGE_OPENCV_WITH_QT
+ bool "qt backend support"
+ depends on BR2_PACKAGE_QT
+ default y
+
+config BR2_PACKAGE_OPENCV_WITH_JPEG
+ bool "jpeg support"
+ select BR2_PACKAGE_JPEG
+ help
+ Use shared libjpeg from the target system.
+
+config BR2_PACKAGE_OPENCV_WITH_PNG
+ bool "png support"
+ select BR2_PACKAGE_LIBPNG
+ help
+ Use shared libpng from the target system.
+
+config BR2_PACKAGE_OPENCV_WITH_TIFF
+ bool "tiff support"
+ select BR2_PACKAGE_TIFF
+ help
+ Use shared libtiff from the target system.
+
+config BR2_PACKAGE_OPENCV_WITH_V4L
+ bool "v4l support"
+ depends on BR2_LARGEFILE
+ select BR2_PACKAGE_LIBV4L
+ help
+ Enable Video 4 Linux support.
+
+comment "v4l support requires a toolchain with LARGEFILE support"
+ depends on !BR2_LARGEFILE
+
+endif # BR2_PACKAGE_OPENCV
+
+comment "opencv requires a toolchain with C++ and WCHAR support"
+ depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR
diff --git a/package/opencv/opencv.mk b/package/opencv/opencv.mk
new file mode 100644
index 0000000..202e059
--- /dev/null
+++ b/package/opencv/opencv.mk
@@ -0,0 +1,125 @@
+#############################################################
+#
+# OpenCV (Open Source Computer Vision)
+#
+#############################################################
+OPENCV_SERIES = 2.3
+OPENCV_VERSION = $(OPENCV_SERIES).0
+OPENCV_SITE = http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/project/opencvlibrary/opencv-unix/$(OPENCV_SERIES)
+OPENCV_SOURCE = OpenCV-$(OPENCV_VERSION).tar.bz2
+OPENCV_INSTALL_STAGING = YES
+
+OPENCV_CONF_OPT = \
+ -DCMAKE_BUILD_TYPE=$(if $(BR2_ENABLE_DEBUG),Debug,Release) \
+ -DBUILD_DOCS=$(if $(BR2_HAVE_DOCUMENTATION),ON,OFF) \
+ -DBUILD_EXAMPLES=OFF \
+ -DBUILD_PACKAGE=OFF \
+ -DBUILD_TESTS=$(if $(BR2_PACKAGE_OPENCV_BUILD_TESTS),ON,OFF) \
+ -DBUILD_SHARED_LIBS=$(if $(BR2_PREFER_STATIC_LIB),OFF,ON) \
+ -DINSTALL_C_EXAMPLES=OFF \
+ -DINSTALL_PYTHON_EXAMPLES=OFF \
+ -DOPENCV_BUILD_3RDPARTY_LIBS=OFF \
+ -DENABLE_PROFILING=OFF \
+ -DCMAKE_SKIP_RPATH=OFF \
+ -DUSE_FAST_MATH=ON \
+ -DUSE_OMIT_FRAME_POINTER=ON \
+ -DUSE_PRECOMPILED_HEADERS=OFF \
+ -DWITH_1394=OFF \
+ -DWITH_CUDA=OFF \
+ -DWITH_EIGEN=OFF \
+ -DWITH_IPP=OFF \
+ -DWITH_JASPER=OFF \
+ -DWITH_OPENEXR=OFF \
+ -DWITH_OPENNI=OFF \
+ -DWITH_PVAPI=OFF \
+ -DWITH_TBB=OFF \
+ -DWITH_UNICAP=OFF \
+ -DWITH_XINE=OFF
+
+ifeq ($(BR2_PACKAGE_OPENCV_WITH_PYTHON),y)
+OPENCV_CONF_OPT += -DBUILD_NEW_PYTHON_SUPPORT=ON
+OPENCV_DEPENDENCIES += python
+else
+OPENCV_CONF_OPT += -DBUILD_NEW_PYTHON_SUPPORT=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_OPENCV_WITH_FFMPEG),y)
+OPENCV_CONF_OPT += -DWITH_FFMPEG=ON
+OPENCV_DEPENDENCIES += ffmpeg
+else
+OPENCV_CONF_OPT += -DWITH_FFMPEG=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_OPENCV_WITH_GSTREAMER),y)
+OPENCV_CONF_OPT += -DWITH_GSTREAMER=ON
+OPENCV_DEPENDENCIES += gstreamer gst-plugins-base
+else
+OPENCV_CONF_OPT += -DWITH_GSTREAMER=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_OPENCV_WITH_GTK),y)
+OPENCV_CONF_OPT += -DWITH_GTK=ON
+OPENCV_DEPENDENCIES += libgtk2
+else
+OPENCV_CONF_OPT += -DWITH_GTK=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_OPENCV_WITH_JPEG),y)
+OPENCV_CONF_OPT += -DWITH_JPEG=ON
+OPENCV_DEPENDENCIES += jpeg
+else
+OPENCV_CONF_OPT += -DWITH_JPEG=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_OPENCV_WITH_PNG),y)
+OPENCV_CONF_OPT += -DWITH_PNG=ON
+OPENCV_DEPENDENCIES += libpng
+else
+OPENCV_CONF_OPT += -DWITH_PNG=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_OPENCV_WITH_QT),y)
+OPENCV_CONF_OPT += -DWITH_QT=ON -DWITH_QT_OPENGL=OFF
+OPENCV_DEPENDENCIES += qt
+else
+OPENCV_CONF_OPT += -DWITH_QT=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_OPENCV_WITH_TIFF),y)
+OPENCV_CONF_OPT += -DWITH_TIFF=ON
+OPENCV_DEPENDENCIES += tiff
+else
+OPENCV_CONF_OPT += -DWITH_TIFF=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_OPENCV_WITH_V4L),y)
+OPENCV_CONF_OPT += -DWITH_V4L=ON
+OPENCV_DEPENDENCIES += libv4l
+else
+OPENCV_CONF_OPT += -DWITH_V4L=OFF
+endif
+
+ifneq ($(BR2_HAVE_DOCUMENTATION),y)
+define OPENCV_CLEAN_INSTALL_DOC
+ $(RM) -fr $(TARGET_DIR)/usr/share/opencv/doc
+endef
+
+OPENCV_POST_INSTALL_TARGET_HOOKS += OPENCV_CLEAN_INSTALL_DOC
+endif
+
+ifneq ($(BR2_PACKAGE_CMAKE),y)
+define OPENCV_CLEAN_INSTALL_CMAKE
+ $(RM) -f $(TARGET_DIR)/usr/share/opencv/OpenCVConfig.cmake
+endef
+OPENCV_POST_INSTALL_TARGET_HOOKS += OPENCV_CLEAN_INSTALL_CMAKE
+endif
+
+ifneq ($(BR2_PACKAGE_OPENCV_INSTALL_DATA),y)
+define OPENCV_CLEAN_INSTALL_DATA
+ $(RM) -fr $(TARGET_DIR)/usr/share/opencv/haarcascades \
+ $(TARGET_DIR)/usr/share/opencv/lbpcascades
+endef
+OPENCV_POST_INSTALL_TARGET_HOOKS += OPENCV_CLEAN_INSTALL_DATA
+endif
+
+$(eval $(call CMAKETARGETS))
^ permalink raw reply related
* [Buildroot] [git commit] orc: add host support
From: Peter Korsgaard @ 2011-10-24 13:36 UTC (permalink / raw)
To: buildroot
commit: http://git.buildroot.net/buildroot/commit/?id=5889480ec61ecba3e6abe0d9cb70c1b7507a6ee5
branch: http://git.buildroot.net/buildroot/commit/?id=refs/heads/master
Some packages use orc to generate C code at build time using orcc, so we
need to build orc for the host as well.
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
---
package/orc/orc.mk | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/package/orc/orc.mk b/package/orc/orc.mk
index d4ff3e2..97c80f2 100644
--- a/package/orc/orc.mk
+++ b/package/orc/orc.mk
@@ -6,6 +6,7 @@
ORC_VERSION = 0.4.14
ORC_SITE = http://code.entropywave.com/download/orc/
ORC_INSTALL_STAGING = YES
+ORC_DEPENDENCIES = host-orc
define ORC_REMOVE_BUGREPORT
rm -f $(TARGET_DIR)/usr/bin/orc-bugreport
@@ -22,3 +23,4 @@ ORC_POST_INSTALL_TARGET_HOOKS += ORC_REMOVE_DEVFILES
endif
$(eval $(call AUTOTARGETS))
+$(eval $(call AUTOTARGETS,host))
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
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.