[RFC] ASoC: Add compatible for mt6359-sound device

2020-11-30 Thread Shane Chien
From: "Shane.Chien" 

In the change "[v2,1/2] Add mediatek codec mt6359 driver",
The compatible of mt6359-sound device is removed
due to it is regarded as a part of parent device,
which is only reflecting Linux model instead of hardware.
However, if the device is not given a comaptible,
of_node of struct device is null. I cannot use
devm_iio_channel_get such iio interface to get
auxadc value from iio channel. Because during
using devm_iio_channel_get, of_node of mt6359-sound is a
input parameter of of_iio_channel_get_by_name.
If the of_node is null, devm_iio_channel_get will
eventually return ENODEV error.
static struct iio_channel *of_iio_channel_get_by_name(struct device_node *np,
  const char *name)
{
struct iio_channel *chan = NULL;

/* Walk up the tree of devices looking for a matching iio channel */
while (np) {  // np is null and will not enter the while loop

}
return chan; // directly return null
}
I add the compatible back to mt6359.c and it
can successfully use devm_iio_channel_get without error.
Is there any suggestions if I need to use this kind of
native interface or can I add the compatible directly?
And I wonder what kind of device can add compatible
under mfd device?

Signed-off-by: Shane.Chien 
---
 sound/soc/codecs/mt6359.c |   58 +
 sound/soc/codecs/mt6359.h |7 ++
 2 files changed, 65 insertions(+)

diff --git a/sound/soc/codecs/mt6359.c b/sound/soc/codecs/mt6359.c
index 6de0d74..1fb47f4 100644
--- a/sound/soc/codecs/mt6359.c
+++ b/sound/soc/codecs/mt6359.c
@@ -12,6 +12,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -2741,6 +2742,37 @@ static void mt6359_codec_remove(struct snd_soc_component 
*cmpnt)
.num_dapm_routes = ARRAY_SIZE(mt6359_dapm_routes),
 };
 
+/* dc trim */
+static int mt6359_get_audio_auxadc(struct mt6359_priv *priv, int auxadc_ch)
+{
+   int value = 0;
+   int ret;
+   struct iio_channel *auxadc;
+
+   switch (auxadc_ch) {
+   case AUXADC_HP_OFFSET_CAL:
+   auxadc = priv->hpofs_cal_auxadc;
+   break;
+   case AUXADC_ACCDET:
+   auxadc = priv->accdet_auxadc;
+   break;
+   default:
+   pr_notice("%s() not support\n");
+   break;
+   }
+
+   if (!IS_ERR(auxadc)) {
+   ret = iio_read_channel_processed(auxadc, );
+   if (ret < 0) {
+   pr_err("Error: %s read fail (%d)\n", __func__, ret);
+   return ret;
+   }
+   }
+   pr_info("%s() value %d\n", __func__, value);
+
+   return value;
+}
+
 static int mt6359_parse_dt(struct mt6359_priv *priv)
 {
int ret;
@@ -2783,6 +2815,25 @@ static int mt6359_parse_dt(struct mt6359_priv *priv)
priv->mux_select[MUX_MIC_TYPE_2] = MIC_TYPE_MUX_IDLE;
}
 
+   /* get auxadc channel */
+   priv->hpofs_cal_auxadc = devm_iio_channel_get(dev,
+ "pmic_hpofs_cal");
+   ret = PTR_ERR_OR_ZERO(priv->hpofs_cal_auxadc);
+   if (ret) {
+   if (ret != -EPROBE_DEFER)
+   dev_err(dev,
+   "%s() Get pmic_hpofs_cal iio ch failed (%d)\n",
+   __func__, ret);
+   }
+   priv->accdet_auxadc = devm_iio_channel_get(dev, "pmic_accdet");
+   ret = PTR_ERR_OR_ZERO(priv->accdet_auxadc);
+   if (ret) {
+   if (ret != -EPROBE_DEFER)
+   dev_err(dev,
+   "%s() Get pmic_accdet iio ch failed (%d)\n",
+   __func__, ret);
+   }
+
return 0;
 }
 
@@ -2818,9 +2869,16 @@ static int mt6359_platform_driver_probe(struct 
platform_device *pdev)
   ARRAY_SIZE(mt6359_dai_driver));
 }
 
+static const struct of_device_id mt6359_of_match[] = {
+   {.compatible = "mediatek,mt6359-sound",},
+   {}
+};
+MODULE_DEVICE_TABLE(of, mt6359_of_match);
+
 static struct platform_driver mt6359_platform_driver = {
.driver = {
.name = "mt6359-sound",
+   .of_match_table = mt6359_of_match,
},
.probe = mt6359_platform_driver_probe,
 };
diff --git a/sound/soc/codecs/mt6359.h b/sound/soc/codecs/mt6359.h
index 35f806b..52d2398 100644
--- a/sound/soc/codecs/mt6359.h
+++ b/sound/soc/codecs/mt6359.h
@@ -2610,6 +2610,11 @@ enum {
PGA_3_MUX_AIN2,
 };
 
+enum {
+   AUXADC_HP_OFFSET_CAL = 0,
+   AUXADC_ACCDET,
+};
+
 struct mt6359_priv {
struct device *dev;
struct regmap *regmap;
@@ -2622,6 +2627,8 @@ struct mt6359_priv {
int hp_gain_ctl;
int hp_hifi_mode;
int mtkaif_protocol;
+   struct iio_channel *hpofs_cal_auxadc;
+   struct iio_channel *accdet_auxadc;
 };
 
 

[PATCH] ASoC: Remove mt6359_platform_driver_remove

2020-11-10 Thread Shane Chien
From: "Shane.Chien" 

remove mt6359_platform_driver_remove due to it is
useless.

Signed-off-by: Shane.Chien 
---
 sound/soc/codecs/mt6359.c |   12 
 1 file changed, 12 deletions(-)

diff --git a/sound/soc/codecs/mt6359.c b/sound/soc/codecs/mt6359.c
index ecdfd57..d37dbd2 100644
--- a/sound/soc/codecs/mt6359.c
+++ b/sound/soc/codecs/mt6359.c
@@ -2817,23 +2817,11 @@ static int mt6359_platform_driver_probe(struct 
platform_device *pdev)
   ARRAY_SIZE(mt6359_dai_driver));
 }
 
-static int mt6359_platform_driver_remove(struct platform_device *pdev)
-{
-   struct mt6359_priv *priv = dev_get_drvdata(>dev);
-   int ret;
-
-   dev_dbg(>dev, "%s(), dev name %s\n",
-   __func__, dev_name(>dev));
-
-   return 0;
-}
-
 static struct platform_driver mt6359_platform_driver = {
.driver = {
.name = "mt6359-sound",
},
.probe = mt6359_platform_driver_probe,
-   .remove = mt6359_platform_driver_remove,
 };
 
 module_platform_driver(mt6359_platform_driver)
-- 
1.7.9.5



[PATCH v3 0/2] Fix vaud18 power leakage of mt6359

2020-11-09 Thread Shane Chien
From: "Shane.Chien" 

This series of patches is to fix vaud18 power leakage problem.
vaud18 will be enable only when mt6359 audio path is turned on.

Change since v2:
 - fix dt-binnding syntex error

Change since v1:
 - use dapm regulator supply widget for vaud18 control.
 - add vaud18 regulator property in mt6359 dt-binding.

Shane.Chien (2):
  ASoC: Fix vaud18 power leakage of mt6359
  dt-bindings: mediatek: mt6359: Add new property for mt6359

 .../devicetree/bindings/sound/mt6359.yaml  |9 +++
 sound/soc/codecs/mt6359.c  |   25 +---
 sound/soc/codecs/mt6359.h  |8 ---
 3 files changed, 10 insertions(+), 32 deletions(-)

-- 
1.7.9.5



[PATCH v3 1/2] ASoC: Fix vaud18 power leakage of mt6359

2020-11-09 Thread Shane Chien
From: "Shane.Chien" 

vaud18 is power of mt6359 audio path. It
should only enable when audio is used,
instead of in boot up stage.
Once mt6359 audio path is enabled or disabled,
vaud18 is controlled by regulator supply widget
"LDO_VAUD18". Due to vaud18 is controlled by
regulator dapm macro instead of regmap, the macro
MT6359_LDO_VAUD18_CON0 and variable avdd_reg
is no used and removed from mt6359.h.

Signed-off-by: Shane.Chien 
---
 sound/soc/codecs/mt6359.c |   25 +
 sound/soc/codecs/mt6359.h |8 
 2 files changed, 1 insertion(+), 32 deletions(-)

diff --git a/sound/soc/codecs/mt6359.c b/sound/soc/codecs/mt6359.c
index d20c59a..ecdfd57 100644
--- a/sound/soc/codecs/mt6359.c
+++ b/sound/soc/codecs/mt6359.c
@@ -1943,9 +1943,7 @@ static int mt_ncp_event(struct snd_soc_dapm_widget *w,
SND_SOC_DAPM_SUPPLY_S("CLK_BUF", SUPPLY_SEQ_CLK_BUF,
  MT6359_DCXO_CW12,
  RG_XO_AUDIO_EN_M_SFT, 0, NULL, 0),
-   SND_SOC_DAPM_SUPPLY_S("LDO_VAUD18", SUPPLY_SEQ_LDO_VAUD18,
- MT6359_LDO_VAUD18_CON0,
- RG_LDO_VAUD18_EN_SFT, 0, NULL, 0),
+   SND_SOC_DAPM_REGULATOR_SUPPLY("LDO_VAUD18", 0, 0),
SND_SOC_DAPM_SUPPLY_S("AUDGLB", SUPPLY_SEQ_AUD_GLB,
  MT6359_AUDDEC_ANA_CON13,
  RG_AUDGLB_PWRDN_VA32_SFT, 1, NULL, 0),
@@ -2807,20 +2805,6 @@ static int mt6359_platform_driver_probe(struct 
platform_device *pdev)
dev_set_drvdata(>dev, priv);
priv->dev = >dev;
 
-   priv->avdd_reg = devm_regulator_get(>dev, "vaud18");
-   if (IS_ERR(priv->avdd_reg)) {
-   dev_err(>dev, "%s(), have no vaud18 supply: %ld",
-   __func__, PTR_ERR(priv->avdd_reg));
-   return PTR_ERR(priv->avdd_reg);
-   }
-
-   ret = regulator_enable(priv->avdd_reg);
-   if (ret) {
-   dev_err(>dev, "%s(), failed to enable regulator!\n",
-   __func__);
-   return ret;
-   }
-
ret = mt6359_parse_dt(priv);
if (ret) {
dev_warn(>dev, "%s() failed to parse dts\n", __func__);
@@ -2841,13 +2825,6 @@ static int mt6359_platform_driver_remove(struct 
platform_device *pdev)
dev_dbg(>dev, "%s(), dev name %s\n",
__func__, dev_name(>dev));
 
-   ret = regulator_disable(priv->avdd_reg);
-   if (ret) {
-   dev_err(>dev, "%s(), failed to disable regulator!\n",
-   __func__);
-   return ret;
-   }
-
return 0;
 }
 
diff --git a/sound/soc/codecs/mt6359.h b/sound/soc/codecs/mt6359.h
index af6f07f..35f806b 100644
--- a/sound/soc/codecs/mt6359.h
+++ b/sound/soc/codecs/mt6359.h
@@ -135,11 +135,6 @@
 /* MT6359_DCXO_CW12 */
 #define RG_XO_AUDIO_EN_M_SFT   13
 
-/* LDO_VAUD18_CON0 */
-#define RG_LDO_VAUD18_EN_SFT   0
-#define RG_LDO_VAUD18_EN_MASK  0x1
-#define RG_LDO_VAUD18_EN_MASK_SFT  (0x1 << 0)
-
 /* AUD_TOP_CKPDN_CON0 */
 #define RG_VOW13M_CK_PDN_SFT   13
 #define RG_VOW13M_CK_PDN_MASK  0x1
@@ -2132,7 +2127,6 @@
 
 #define MT6359_DCXO_CW11   0x7a6
 #define MT6359_DCXO_CW12   0x7a8
-#define MT6359_LDO_VAUD18_CON0 0x1c98
 
 #define MT6359_GPIO_MODE0  0xcc
 #define MT6359_GPIO_MODE0_SET  0xce
@@ -2469,7 +2463,6 @@ enum {
 enum {
/* common */
SUPPLY_SEQ_CLK_BUF,
-   SUPPLY_SEQ_LDO_VAUD18,
SUPPLY_SEQ_AUD_GLB,
SUPPLY_SEQ_HP_PULL_DOWN,
SUPPLY_SEQ_CLKSQ,
@@ -2629,7 +2622,6 @@ struct mt6359_priv {
int hp_gain_ctl;
int hp_hifi_mode;
int mtkaif_protocol;
-   struct regulator *avdd_reg;
 };
 
 #define CODEC_MT6359_NAME "mtk-codec-mt6359"
-- 
1.7.9.5



[PATCH v3 2/2] dt-bindings: mediatek: mt6359: Add new property for mt6359

2020-11-09 Thread Shane Chien
From: "Shane.Chien" 

This patch add "LDO_VAUD18-supply" property to
control vaud18 regulator. It is labeled as required
due to mt6359 audio path always need to enable vaud18.

Signed-off-by: Shane.Chien 
---
 .../devicetree/bindings/sound/mt6359.yaml  |9 +
 1 file changed, 9 insertions(+)

diff --git a/Documentation/devicetree/bindings/sound/mt6359.yaml 
b/Documentation/devicetree/bindings/sound/mt6359.yaml
index a54f466..ef027c7 100644
--- a/Documentation/devicetree/bindings/sound/mt6359.yaml
+++ b/Documentation/devicetree/bindings/sound/mt6359.yaml
@@ -17,6 +17,11 @@ description: |
   Must be a child node of PMIC wrapper.
 
 properties:
+  LDO_VAUD18-supply:
+$ref: /schemas/types.yaml#/definitions/phandle
+description: |
+  Regulator of LDO VAUD18 at 1.8V.
+
   mediatek,dmic-mode:
 $ref: /schemas/types.yaml#/definitions/uint32
 description: |
@@ -49,11 +54,15 @@ properties:
 description: |
   Specifies the type of mic type connected to adc2
 
+required:
+  - LDO_VAUD18-supply
+
 additionalProperties: false
 
 examples:
   - |
 mt6359codec: mt6359codec {
+  LDO_VAUD18-supply = <_vaud18_reg>;
   mediatek,dmic-mode = <0>;
   mediatek,mic-type-0 = <2>;
 };
-- 
1.7.9.5



[PATCH v2 0/2] Fix vaud18 power leakage of mt6359

2020-11-09 Thread Shane Chien
From: "Shane.Chien" 

This series of patches is to fix vaud18 power leakage problem.
vaud18 will be enable only when mt6359 audio path is turned on.

Change since v1:
 - use dapm regulator supply widget for vaud18 control.
 - add vaud18 regulator property in mt6359 dt-binding.

Shane.Chien (2):
  ASoC: Fix vaud18 power leakage of mt6359
  dt-bindings: mediatek: mt6359: Add new property for mt6359

 .../devicetree/bindings/sound/mt6359.yaml  |9 +++
 sound/soc/codecs/mt6359.c  |   25 +---
 sound/soc/codecs/mt6359.h  |8 ---
 3 files changed, 10 insertions(+), 32 deletions(-)

-- 
1.7.9.5



[PATCH v2 2/2] dt-bindings: mediatek: mt6359: Add new property for mt6359

2020-11-09 Thread Shane Chien
From: "Shane.Chien" 

This patch add "LDO_VAUD18-supply" property to
control vaud18 regulator. It is labeled as required
due to mt6359 audio path always need to enable vaud18.

Signed-off-by: Shane.Chien 
---
 .../devicetree/bindings/sound/mt6359.yaml  |9 +
 1 file changed, 9 insertions(+)

diff --git a/Documentation/devicetree/bindings/sound/mt6359.yaml 
b/Documentation/devicetree/bindings/sound/mt6359.yaml
index a54f466..7ccaa8c 100644
--- a/Documentation/devicetree/bindings/sound/mt6359.yaml
+++ b/Documentation/devicetree/bindings/sound/mt6359.yaml
@@ -17,6 +17,11 @@ description: |
   Must be a child node of PMIC wrapper.
 
 properties:
+  LDO_VAUD18-supply:
+ref: /schemas/types.yaml#/definitions/phandle
+description: |
+  Regulator of LDO VAUD18 at 1.8V.
+
   mediatek,dmic-mode:
 $ref: /schemas/types.yaml#/definitions/uint32
 description: |
@@ -49,11 +54,15 @@ properties:
 description: |
   Specifies the type of mic type connected to adc2
 
+required:
+  - LDO_VAUD18-supply
+
 additionalProperties: false
 
 examples:
   - |
 mt6359codec: mt6359codec {
+  LDO_VAUD18-supply = <_vaud18_reg>;
   mediatek,dmic-mode = <0>;
   mediatek,mic-type-0 = <2>;
 };
-- 
1.7.9.5



[PATCH v2 1/2] ASoC: Fix vaud18 power leakage of mt6359

2020-11-09 Thread Shane Chien
From: "Shane.Chien" 

vaud18 is power of mt6359 audio path. It
should only enable when audio is used,
instead of in boot up stage.
Once mt6359 audio path is enabled or disabled,
vaud18 is controlled by regulator supply widget
"LDO_VAUD18". Due to vaud18 is controlled by
regulator dapm macro instead of regmap, the macro
MT6359_LDO_VAUD18_CON0 and variable avdd_reg
is no used and removed from mt6359.h.

Signed-off-by: Shane.Chien 
---
 sound/soc/codecs/mt6359.c |   25 +
 sound/soc/codecs/mt6359.h |8 
 2 files changed, 1 insertion(+), 32 deletions(-)

diff --git a/sound/soc/codecs/mt6359.c b/sound/soc/codecs/mt6359.c
index d20c59a..ecdfd57 100644
--- a/sound/soc/codecs/mt6359.c
+++ b/sound/soc/codecs/mt6359.c
@@ -1943,9 +1943,7 @@ static int mt_ncp_event(struct snd_soc_dapm_widget *w,
SND_SOC_DAPM_SUPPLY_S("CLK_BUF", SUPPLY_SEQ_CLK_BUF,
  MT6359_DCXO_CW12,
  RG_XO_AUDIO_EN_M_SFT, 0, NULL, 0),
-   SND_SOC_DAPM_SUPPLY_S("LDO_VAUD18", SUPPLY_SEQ_LDO_VAUD18,
- MT6359_LDO_VAUD18_CON0,
- RG_LDO_VAUD18_EN_SFT, 0, NULL, 0),
+   SND_SOC_DAPM_REGULATOR_SUPPLY("LDO_VAUD18", 0, 0),
SND_SOC_DAPM_SUPPLY_S("AUDGLB", SUPPLY_SEQ_AUD_GLB,
  MT6359_AUDDEC_ANA_CON13,
  RG_AUDGLB_PWRDN_VA32_SFT, 1, NULL, 0),
@@ -2807,20 +2805,6 @@ static int mt6359_platform_driver_probe(struct 
platform_device *pdev)
dev_set_drvdata(>dev, priv);
priv->dev = >dev;
 
-   priv->avdd_reg = devm_regulator_get(>dev, "vaud18");
-   if (IS_ERR(priv->avdd_reg)) {
-   dev_err(>dev, "%s(), have no vaud18 supply: %ld",
-   __func__, PTR_ERR(priv->avdd_reg));
-   return PTR_ERR(priv->avdd_reg);
-   }
-
-   ret = regulator_enable(priv->avdd_reg);
-   if (ret) {
-   dev_err(>dev, "%s(), failed to enable regulator!\n",
-   __func__);
-   return ret;
-   }
-
ret = mt6359_parse_dt(priv);
if (ret) {
dev_warn(>dev, "%s() failed to parse dts\n", __func__);
@@ -2841,13 +2825,6 @@ static int mt6359_platform_driver_remove(struct 
platform_device *pdev)
dev_dbg(>dev, "%s(), dev name %s\n",
__func__, dev_name(>dev));
 
-   ret = regulator_disable(priv->avdd_reg);
-   if (ret) {
-   dev_err(>dev, "%s(), failed to disable regulator!\n",
-   __func__);
-   return ret;
-   }
-
return 0;
 }
 
diff --git a/sound/soc/codecs/mt6359.h b/sound/soc/codecs/mt6359.h
index af6f07f..35f806b 100644
--- a/sound/soc/codecs/mt6359.h
+++ b/sound/soc/codecs/mt6359.h
@@ -135,11 +135,6 @@
 /* MT6359_DCXO_CW12 */
 #define RG_XO_AUDIO_EN_M_SFT   13
 
-/* LDO_VAUD18_CON0 */
-#define RG_LDO_VAUD18_EN_SFT   0
-#define RG_LDO_VAUD18_EN_MASK  0x1
-#define RG_LDO_VAUD18_EN_MASK_SFT  (0x1 << 0)
-
 /* AUD_TOP_CKPDN_CON0 */
 #define RG_VOW13M_CK_PDN_SFT   13
 #define RG_VOW13M_CK_PDN_MASK  0x1
@@ -2132,7 +2127,6 @@
 
 #define MT6359_DCXO_CW11   0x7a6
 #define MT6359_DCXO_CW12   0x7a8
-#define MT6359_LDO_VAUD18_CON0 0x1c98
 
 #define MT6359_GPIO_MODE0  0xcc
 #define MT6359_GPIO_MODE0_SET  0xce
@@ -2469,7 +2463,6 @@ enum {
 enum {
/* common */
SUPPLY_SEQ_CLK_BUF,
-   SUPPLY_SEQ_LDO_VAUD18,
SUPPLY_SEQ_AUD_GLB,
SUPPLY_SEQ_HP_PULL_DOWN,
SUPPLY_SEQ_CLKSQ,
@@ -2629,7 +2622,6 @@ struct mt6359_priv {
int hp_gain_ctl;
int hp_hifi_mode;
int mtkaif_protocol;
-   struct regulator *avdd_reg;
 };
 
 #define CODEC_MT6359_NAME "mtk-codec-mt6359"
-- 
1.7.9.5



[PATCH] ASoC: Fix vaud18 power leakage of mt6359

2020-11-05 Thread Shane Chien
From: "Shane.Chien" 

vaud18 is power of mt6359 audio path. It
should only enable when audio is used,
instead of in boot up stage.
Once mt6359 audio path is enabled or disabled,
vaud18 is controlled by using regulator in
supply widget "LDO_VAUD18". Due to vaud18 is
controlled by regulator instead of regmap,
the macro MT6359_LDO_VAUD18_CON0 is no used and
remove from mt6359.h.

Signed-off-by: Shane.Chien 
---
 sound/soc/codecs/mt6359.c | 38 +-
 sound/soc/codecs/mt6359.h |  6 --
 2 files changed, 29 insertions(+), 15 deletions(-)

diff --git a/sound/soc/codecs/mt6359.c b/sound/soc/codecs/mt6359.c
index d20c59a..52dabdc 100644
--- a/sound/soc/codecs/mt6359.c
+++ b/sound/soc/codecs/mt6359.c
@@ -724,6 +724,32 @@ static SOC_VALUE_ENUM_SINGLE_DECL(pga_3_mux_map_enum,
 static const struct snd_kcontrol_new pga_3_mux_control =
SOC_DAPM_ENUM("PGA 3 Select", pga_3_mux_map_enum);
 
+static int mt_vaud18_event(struct snd_soc_dapm_widget *w,
+  struct snd_kcontrol *kcontrol,
+  int event)
+{
+   struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm);
+   struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt);
+   int ret = 0;
+
+   switch (event) {
+   case SND_SOC_DAPM_PRE_PMU:
+   ret = regulator_enable(priv->avdd_reg);
+   if (ret)
+   dev_err(priv->dev, "regulator_enable err: %d\n", ret);
+   break;
+   case SND_SOC_DAPM_POST_PMD:
+   ret = regulator_disable(priv->avdd_reg);
+   if (ret)
+   dev_err(priv->dev, "regulator_disable err: %d\n", ret);
+   break;
+   default:
+   break;
+   }
+
+   return ret;
+}
+
 static int mt_sgen_event(struct snd_soc_dapm_widget *w,
 struct snd_kcontrol *kcontrol,
 int event)
@@ -1944,8 +1970,9 @@ static int mt_ncp_event(struct snd_soc_dapm_widget *w,
  MT6359_DCXO_CW12,
  RG_XO_AUDIO_EN_M_SFT, 0, NULL, 0),
SND_SOC_DAPM_SUPPLY_S("LDO_VAUD18", SUPPLY_SEQ_LDO_VAUD18,
- MT6359_LDO_VAUD18_CON0,
- RG_LDO_VAUD18_EN_SFT, 0, NULL, 0),
+ SND_SOC_NOPM, 0, 0,
+ mt_vaud18_event,
+ SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD),
SND_SOC_DAPM_SUPPLY_S("AUDGLB", SUPPLY_SEQ_AUD_GLB,
  MT6359_AUDDEC_ANA_CON13,
  RG_AUDGLB_PWRDN_VA32_SFT, 1, NULL, 0),
@@ -2814,13 +2841,6 @@ static int mt6359_platform_driver_probe(struct 
platform_device *pdev)
return PTR_ERR(priv->avdd_reg);
}
 
-   ret = regulator_enable(priv->avdd_reg);
-   if (ret) {
-   dev_err(>dev, "%s(), failed to enable regulator!\n",
-   __func__);
-   return ret;
-   }
-
ret = mt6359_parse_dt(priv);
if (ret) {
dev_warn(>dev, "%s() failed to parse dts\n", __func__);
diff --git a/sound/soc/codecs/mt6359.h b/sound/soc/codecs/mt6359.h
index af6f07f..1dfb29a 100644
--- a/sound/soc/codecs/mt6359.h
+++ b/sound/soc/codecs/mt6359.h
@@ -135,11 +135,6 @@
 /* MT6359_DCXO_CW12 */
 #define RG_XO_AUDIO_EN_M_SFT   13
 
-/* LDO_VAUD18_CON0 */
-#define RG_LDO_VAUD18_EN_SFT   0
-#define RG_LDO_VAUD18_EN_MASK  0x1
-#define RG_LDO_VAUD18_EN_MASK_SFT  (0x1 << 0)
-
 /* AUD_TOP_CKPDN_CON0 */
 #define RG_VOW13M_CK_PDN_SFT   13
 #define RG_VOW13M_CK_PDN_MASK  0x1
@@ -2132,7 +2127,6 @@
 
 #define MT6359_DCXO_CW11   0x7a6
 #define MT6359_DCXO_CW12   0x7a8
-#define MT6359_LDO_VAUD18_CON0 0x1c98
 
 #define MT6359_GPIO_MODE0  0xcc
 #define MT6359_GPIO_MODE0_SET  0xce
-- 
1.9.1



[PATCH] ASoC: Use memset_io to access I/O memory

2020-09-18 Thread Shane Chien
From: "Shane.Chien" 

Use memset_io to access I/O memory, instead of
memset.

Signed-off-by: Shane.Chien 
---
 sound/core/pcm_native.c |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
index 9e0b2d7..a4efa84 100644
--- a/sound/core/pcm_native.c
+++ b/sound/core/pcm_native.c
@@ -756,7 +756,7 @@ static int snd_pcm_hw_params(struct snd_pcm_substream 
*substream,
 
/* clear the buffer for avoiding possible kernel info leaks */
if (runtime->dma_area && !substream->ops->copy_user)
-   memset(runtime->dma_area, 0, runtime->dma_bytes);
+   memset_io(runtime->dma_area, 0, runtime->dma_bytes);
 
snd_pcm_timer_resolution_change(substream);
snd_pcm_set_state(substream, SNDRV_PCM_STATE_SETUP);
-- 
1.7.9.5


[PATCH 0/1] Use memset_io to access I/O memory

2020-09-18 Thread Shane Chien
From: "Shane.Chien" 

Use memset_io to access I/O memory, instead of
memset.

Shane.Chien (1):
  ASoC: Use memset_io to access I/O memory

 sound/core/pcm_native.c |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
1.7.9.5


Darowizna

2020-05-29 Thread SHANE MISSLER



Nazywam się SHANE MISSLER, wygrałem loterię o wartości 451 milionów dolarów i 
postanowiłem przekazać tobie kwotę 5500 000,00 €. Przekazuję wam tę darowiznę 
za miłość, którą mam dla ludzkości i za pomoc osobom dotkniętym pandemią w 
waszym kraju.Skontaktuj się ze mną, aby odebrać tę darowiznęDziękuję i Bóg 
zapłać.pozdrowieniaSHANE MISSLER


Spende von 5 Millionen Euro

2019-09-20 Thread Shane Missler
Dies ist eine persönliche Mail, die ich an Sie adressiere. Ich bin SHANE 
MISSLER aus Florida, USA. Wie Sie bereits wissen, habe ich einen Lotto-Jackpot 
in Höhe von 451 Mio. USD (330 Mio. GBP) gewonnen und das Geld hat mein Leben 
und mein Familienleben verändert, aber es wird mein Herz nicht verändern, wie 
ich an dem Tag sagte, an dem ich mein Geld habe, das ich verwenden werde Dieses 
Geld für die Hilfe der Menschheit. Ich habe beschlossen, Ihnen und Ihrer 
Gemeinde einen Betrag von 5 Millionen Euro zu spenden, um diese Spende 
anzufordern. E-Mail: (shanemissl...@gmail.com)

Ceci est un courrier personnel que je vous adresse. Je suis SHANE MISSLER, de 
Floride, États-Unis. Comme vous le savez déjà, j'ai gagné 451 millions de 
dollars (Lotto Jackpot) et l'argent a changé ma vie et celle de ma famille, 
mais cela ne changera pas mon cœur, comme je l'ai dit le jour où j'ai mon 
argent, j'utiliserai cet argent pour l'aide de l'humanité.J'ai décidé de vous 
donner la somme de 5 millions d'euros à vous et à votre communauté, pour 
réclamer ce don, email- (shanemissl...@gmail.com)



.


La informacion contenida en este correo, asi como la contenida en los 
documentos anexos, puede contener datos personales, por lo que su difusion es 
responsabilidad de quien los transmite y quien los recibe, en términos de lo 
dispuesto por las fracciones II y VII del articulo 4, ultimo parrafo del 
articulo 8, articulo 36 parrafo II, 38 fraccion I y demas aplicables de la Ley 
de Transparencia y Acceso a la Informacion Publica del Distrito Federal.
Los Datos Personales se encuentran protegidos por la Ley de Proteccion de Datos 
Personales del Distrito Federal, por lo que su difusion se encuentra tutelada 
en sus articulos 2, 5, 16, 21, 41 y demas relativos y aplicables, debiendo 
sujetarse en su caso, a las disposiciones relativas a la creacion, modificacion 
o supresion de datos personales previstos. Asimismo, debera estarse a lo 
señalado en los numerales 1 , 3, 12, 18, 19, 20, 21, 23, 24, 29, 35 y demas 
aplicables de los Lineamientos para la Proteccion de Datos Personales en el 
Distrito Federal.
En el uso de las tecnologias de la informacion y comunicaciones del Gobierno 
del Distrito Federal, debera observarse puntualmente lo dispuesto por la Ley 
Gobierno Electronico del Distrito Federal, la ley para hacer de la Ciudad de 
Mexico una Ciudad Mas Abierta, el apartado 10 de la Circular Uno vigente y las 
Normas Generales que deberan observarse en materia de Seguridad de la 
Informacion en la Administracion Publica del Distrito Federal.


Spende von 5 Millionen Euro

2019-09-18 Thread Shane Missler
Dies ist eine persönliche Mail, die ich an Sie adressiere. Ich bin SHANE 
MISSLER aus Florida, USA. Wie Sie bereits wissen, habe ich einen Lotto-Jackpot 
in Höhe von 451 Mio. USD (330 Mio. GBP) gewonnen und das Geld hat mein Leben 
und mein Familienleben verändert, aber es wird mein Herz nicht verändern, wie 
ich an dem Tag sagte, an dem ich mein Geld habe, das ich verwenden werde Dieses 
Geld für die Hilfe der Menschheit. Ich habe beschlossen, Ihnen und Ihrer 
Gemeinde einen Betrag von 5 Millionen Euro zu spenden, um diese Spende 
anzufordern. E-Mail: (shanemissl...@gmail.com)


Ceci est un courrier personnel que je vous adresse. Je suis SHANE MISSLER, de 
Floride, États-Unis. Comme vous le savez déjà, j'ai gagné 451 millions de 
dollars (Lotto Jackpot) et l'argent a changé ma vie et celle de ma famille, 
mais cela ne changera pas mon cœur, comme je l'ai dit le jour où j'ai mon 
argent, j'utiliserai cet argent pour l'aide de l'humanité.J'ai décidé de vous 
donner la somme de 5 millions d'euros à vous et à votre communauté, pour 
réclamer ce don, email- (shanemissl...@gmail.com)




.


La informacion contenida en este correo, asi como la contenida en los 
documentos anexos, puede contener datos personales, por lo que su difusion es 
responsabilidad de quien los transmite y quien los recibe, en términos de lo 
dispuesto por las fracciones II y VII del articulo 4, ultimo parrafo del 
articulo 8, articulo 36 parrafo II, 38 fraccion I y demas aplicables de la Ley 
de Transparencia y Acceso a la Informacion Publica del Distrito Federal.
Los Datos Personales se encuentran protegidos por la Ley de Proteccion de Datos 
Personales del Distrito Federal, por lo que su difusion se encuentra tutelada 
en sus articulos 2, 5, 16, 21, 41 y demas relativos y aplicables, debiendo 
sujetarse en su caso, a las disposiciones relativas a la creacion, modificacion 
o supresion de datos personales previstos. Asimismo, debera estarse a lo 
señalado en los numerales 1 , 3, 12, 18, 19, 20, 21, 23, 24, 29, 35 y demas 
aplicables de los Lineamientos para la Proteccion de Datos Personales en el 
Distrito Federal.
En el uso de las tecnologias de la informacion y comunicaciones del Gobierno 
del Distrito Federal, debera observarse puntualmente lo dispuesto por la Ley 
Gobierno Electronico del Distrito Federal, la ley para hacer de la Ciudad de 
Mexico una Ciudad Mas Abierta, el apartado 10 de la Circular Uno vigente y las 
Normas Generales que deberan observarse en materia de Seguridad de la 
Informacion en la Administracion Publica del Distrito Federal.


YOU HAVE BEEN CHOSEN

2018-07-27 Thread Shane Missler




 

Dear Beneficiary,

 

Greetings to you. Following my Mega Jackpot winning of $451 million on January 5th, 2018 which I hope to use to pursue a variety of passions,help my family and do some good for humanity. I have voluntarily decided to donate some Money to charities across the world hence, be informed that you have been selected to benefit from my charity project aimed at touching lives as God has blessed me.

 

This donation of $1 Million is made out to enable you strengthen your personal issues and generously extend hands of help to the less privileged,orphans and charity organizations within your locality.

 

Should you wish to verify,below are link to that effect:

 

 

http://www.bbc.com/news/world-us-canada-42671157

https://www.youtube.com/watch?v=G6IAFzRF4oU

 

Kindly Forward your Message of Acceptance to: shaness...@yahoo.com

 

Best Regards.

 

 

Shane Missler




YOU HAVE BEEN CHOSEN

2018-07-27 Thread Shane Missler




 

Dear Beneficiary,

 

Greetings to you. Following my Mega Jackpot winning of $451 million on January 5th, 2018 which I hope to use to pursue a variety of passions,help my family and do some good for humanity. I have voluntarily decided to donate some Money to charities across the world hence, be informed that you have been selected to benefit from my charity project aimed at touching lives as God has blessed me.

 

This donation of $1 Million is made out to enable you strengthen your personal issues and generously extend hands of help to the less privileged,orphans and charity organizations within your locality.

 

Should you wish to verify,below are link to that effect:

 

 

http://www.bbc.com/news/world-us-canada-42671157

https://www.youtube.com/watch?v=G6IAFzRF4oU

 

Kindly Forward your Message of Acceptance to: shaness...@yahoo.com

 

Best Regards.

 

 

Shane Missler




YOU HAVE BEEN CHOSEN

2018-07-27 Thread Shane Missler




 

Dear Beneficiary,

 

Greetings to you. Following my Mega Jackpot winning of $451 million on January 5th, 2018 which I hope to use to pursue a variety of passions,help my family and do some good for humanity. I have voluntarily decided to donate some Money to charities across the world hence, be informed that you have been selected to benefit from my charity project aimed at touching lives as God has blessed me.

 

This donation of $1 Million is made out to enable you strengthen your personal issues and generously extend hands of help to the less privileged,orphans and charity organizations within your locality.

 

Should you wish to verify,below are link to that effect:

 

 

http://www.bbc.com/news/world-us-canada-42671157

https://www.youtube.com/watch?v=G6IAFzRF4oU

 

Kindly Forward your Message of Acceptance to: shaness...@yahoo.com

 

Best Regards.

 

 

Shane Missler




YOU HAVE BEEN CHOSEN

2018-07-27 Thread Shane Missler




 

Dear Beneficiary,

 

Greetings to you. Following my Mega Jackpot winning of $451 million on January 5th, 2018 which I hope to use to pursue a variety of passions,help my family and do some good for humanity. I have voluntarily decided to donate some Money to charities across the world hence, be informed that you have been selected to benefit from my charity project aimed at touching lives as God has blessed me.

 

This donation of $1 Million is made out to enable you strengthen your personal issues and generously extend hands of help to the less privileged,orphans and charity organizations within your locality.

 

Should you wish to verify,below are link to that effect:

 

 

http://www.bbc.com/news/world-us-canada-42671157

https://www.youtube.com/watch?v=G6IAFzRF4oU

 

Kindly Forward your Message of Acceptance to: shaness...@yahoo.com

 

Best Regards.

 

 

Shane Missler




RE: [PATCH] qlogicpti: Return correct error code

2016-02-29 Thread Seymour, Shane M

Reviewed-by: Shane Seymour <shane.seym...@hpe.com>



RE: [PATCH] qlogicpti: Return correct error code

2016-02-29 Thread Seymour, Shane M

Reviewed-by: Shane Seymour 



RE: [PATCH] snic: correctly check for array overrun on overly long version number

2016-02-29 Thread Seymour, Shane M

Reviewed-by: Shane Seymour <shane.seym...@hpe.com>



RE: [PATCH] snic: correctly check for array overrun on overly long version number

2016-02-29 Thread Seymour, Shane M

Reviewed-by: Shane Seymour 



RE: [PATCH] ipr: fix out-of-bounds null overwrite

2016-01-05 Thread Seymour, Shane M
>   len = snprintf(fname, 99, "%s", buf);
> - fname[len-1] = '\0';

Since it appears that's the only time len is actually used in that function can
you please remove the variable len completely as part of the patch?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [PATCH] ipr: fix out-of-bounds null overwrite

2016-01-05 Thread Seymour, Shane M
>   len = snprintf(fname, 99, "%s", buf);
> - fname[len-1] = '\0';

Since it appears that's the only time len is actually used in that function can
you please remove the variable len completely as part of the patch?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [PATCH 2/2] pci: Update VPD size with correct length

2015-12-17 Thread Seymour, Shane M
Tested with a HP AE311-60001 PCIe card. It used to repeat the same VPD every 4k
for 32k now only the 154 bytes are returned and lspci - reports that the 
data up
to and including the end and that the check sum is good:

...
Capabilities: [74] Vital Product Data
Product Name: PCI-Express 4Gb Fibre Channel HBA
Read-only fields:
[PN] Part number: AE311-60001
[EC] Engineering changes: C-4830
[SN] Serial number: CN80847W3U
[V0] Vendor specific: PW=15W
[V2] Vendor specific: 4847
[MN] Manufacture ID: 50 58 32 35 31 30 34 30 31 2d 37 
30 20 20 42
[V1] Vendor specific: 02.22
[V3] Vendor specific: 05.03.15
[V4] Vendor specific: 03.13
[V5] Vendor specific: 02.03
[YA] Asset tag: NA
[RV] Reserved: checksum good, 0 byte(s) reserved
End
...
---
Tested-by: Shane Seymour 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [PATCH 1/2] pci: Update VPD definitions

2015-12-17 Thread Seymour, Shane M
> The 'end' tag is actually 0x0f, it's the representation as a
> small resource data type tag that's 0x78 (ie shifted by 3).
> This patch also adds helper functions to extract the resource
> data type tags for both large and small resource data types.
>
> Cc: Alexander Duyck 
> Cc: Bjorn Helgaas 
> Signed-off-by: Hannes Reinecke 

Tested-by: Shane Seymour 

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [PATCH 1/2] pci: Update VPD definitions

2015-12-17 Thread Seymour, Shane M
> The 'end' tag is actually 0x0f, it's the representation as a
> small resource data type tag that's 0x78 (ie shifted by 3).
> This patch also adds helper functions to extract the resource
> data type tags for both large and small resource data types.
>
> Cc: Alexander Duyck <alexander.du...@gmail.com>
> Cc: Bjorn Helgaas <bhelg...@google.com>
> Signed-off-by: Hannes Reinecke <h...@suse.com>

Tested-by: Shane Seymour <shane.seym...@hpe.com>

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [PATCH 2/2] pci: Update VPD size with correct length

2015-12-17 Thread Seymour, Shane M
Tested with a HP AE311-60001 PCIe card. It used to repeat the same VPD every 4k
for 32k now only the 154 bytes are returned and lspci - reports that the 
data up
to and including the end and that the check sum is good:

...
Capabilities: [74] Vital Product Data
Product Name: PCI-Express 4Gb Fibre Channel HBA
Read-only fields:
[PN] Part number: AE311-60001
[EC] Engineering changes: C-4830
[SN] Serial number: CN80847W3U
[V0] Vendor specific: PW=15W
[V2] Vendor specific: 4847
[MN] Manufacture ID: 50 58 32 35 31 30 34 30 31 2d 37 
30 20 20 42
[V1] Vendor specific: 02.22
[V3] Vendor specific: 05.03.15
[V4] Vendor specific: 03.13
[V5] Vendor specific: 02.03
[YA] Asset tag: NA
[RV] Reserved: checksum good, 0 byte(s) reserved
End
...
---
Tested-by: Shane Seymour <shane.seym...@hpe.com>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [PATCHv2] pci: Update VPD size with correct length

2015-12-16 Thread Seymour, Shane M
> The only 'error' cases I've encountered so far is a read of all zeroes (and a
> halting the machine once you've read beyond a certain point) or a read of
> 0xff throughout the entire area. So that approach would work for both of them.

I should add that I'd tested the previous patch and this patch. I'll retest 
once v3 is available.

I have a card that repeats the vpd data every 4k for all 32k. The patch as it 
stands truncates that to just the valid data and lspci - shows the vpd data 
correctly.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [PATCHv2] pci: Update VPD size with correct length

2015-12-16 Thread Seymour, Shane M
> The only 'error' cases I've encountered so far is a read of all zeroes (and a
> halting the machine once you've read beyond a certain point) or a read of
> 0xff throughout the entire area. So that approach would work for both of them.

I should add that I'd tested the previous patch and this patch. I'll retest 
once v3 is available.

I have a card that repeats the vpd data every 4k for all 32k. The patch as it 
stands truncates that to just the valid data and lspci - shows the vpd data 
correctly.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [PATCH v5 1/2] block: invalidate the page cache when issuing BLKZEROOUT.

2015-12-14 Thread Seymour, Shane M
Thank you for taking the issues I raised about converting
unsigned to signed into account.

Reviewed-by: Shane Seymour 



RE: [PATCH v5 1/2] block: invalidate the page cache when issuing BLKZEROOUT.

2015-12-14 Thread Seymour, Shane M
Thank you for taking the issues I raised about converting
unsigned to signed into account.

Reviewed-by: Shane Seymour <shane.seym...@hpe.com>



RE: [PATCH v4] block: create ioctl to discard-or-zeroout a range of blocks

2015-11-16 Thread Seymour, Shane M

> v4: Check the start/len arguments for overflows prior to feeding the page
> cache bogus numbers (that it'll ignore anyway).

> Signed-off-by: Darrick J. Wong 

Reviewed-by: Shane Seymour 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [PATCH v4] block: create ioctl to discard-or-zeroout a range of blocks

2015-11-16 Thread Seymour, Shane M

> v4: Check the start/len arguments for overflows prior to feeding the page
> cache bogus numbers (that it'll ignore anyway).

> Signed-off-by: Darrick J. Wong <darrick.w...@oracle.com>

Reviewed-by: Shane Seymour <shane.seym...@hpe.com>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [PATCH] block: create ioctl to discard-or-zeroout a range of blocks

2015-11-12 Thread Seymour, Shane M
> I don't have a device large enough to test for signedness errors, since 
> passing 
> huge values for start and len never make it past the i_size_read check.

If you have someone trying to bypass your sanity checks then if 
start=18446744073709551104 and len=1024 the result of adding them together will 
be 512 (subtracting an extra 1 in the patched code to get 511 for end). That 
will pass the i_size_read check won't it? If so that would cause lstart in 
truncate_inode_pages_range() to be -512. I don't know what 
truncate_inode_pages_range() will do with a negative lstart value like that but 
it seems like an unusual value for your code to be willing to pass into 
truncate_inode_pages_range().

Shane
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [PATCH] block: create ioctl to discard-or-zeroout a range of blocks

2015-11-12 Thread Seymour, Shane M
> I don't have a device large enough to test for signedness errors, since 
> passing 
> huge values for start and len never make it past the i_size_read check.

If you have someone trying to bypass your sanity checks then if 
start=18446744073709551104 and len=1024 the result of adding them together will 
be 512 (subtracting an extra 1 in the patched code to get 511 for end). That 
will pass the i_size_read check won't it? If so that would cause lstart in 
truncate_inode_pages_range() to be -512. I don't know what 
truncate_inode_pages_range() will do with a negative lstart value like that but 
it seems like an unusual value for your code to be willing to pass into 
truncate_inode_pages_range().

Shane
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [PATCH] block: create ioctl to discard-or-zeroout a range of blocks

2015-11-11 Thread Seymour, Shane M
> which would make the other checks I suggested to ensure that neither start
> or end were more than (uint64_t)LLONG_MAX unnecessary.

My apologies I was wrong about what I said above - after thinking about it for 
longer you still need to make sure that at least len is not greater than 
(uint64_t)LLONG_MAX because in the calculation:

if (start > (uint64_t)LLONG_MAX - len)
return -EINVAL;

if len was more than (uint64_t)LLONG_MAX it would underflow and become a very 
large positive number and start would never be greater than that (and I said 
end when I should have said len).
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [PATCH] block: create ioctl to discard-or-zeroout a range of blocks

2015-11-11 Thread Seymour, Shane M
> I don't have a device large enough to test for signedness errors, since 
> passing
> huge values for start and len never make it past the i_size_read check.
> However, I do see that I forgot to check the padding values, so I'll update 
> that.

Then do you want to at least consider converting end to be of type loff_t to
match the type of value returned by i_get_size() and the type of the value
passed to truncate_inode_pages_range()? Then you only need one additional
check, something like:

/* Check for an overflow when adding start+len into end */
if (start > (uint64_t)LLONG_MAX - len)
return -EINVAL;

Looking at the maximum values if we have start=0 and
len=(uint64_t)LLONG_MAX we would still continue but
len=(uint64_t)LLONG_MAX+1 would return -EINVAL. Similarly for
start=(uint64_t)LLONG_MAX and len=0 it would continue
but start=(uint64_t)LLONG_MAX+1 would return -EINVAL and that 
should allow start + len to be safely added and stored into an loff_t without
overflow. With this check start+len can never be more than (uint64_t)LLONG_MAX
which would make the other checks I suggested to ensure that neither start or 
end
were more than (uint64_t)LLONG_MAX unnecessary.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [PATCH] block: create ioctl to discard-or-zeroout a range of blocks

2015-11-11 Thread Seymour, Shane M
> I don't have a device large enough to test for signedness errors, since 
> passing
> huge values for start and len never make it past the i_size_read check.
> However, I do see that I forgot to check the padding values, so I'll update 
> that.

Then do you want to at least consider converting end to be of type loff_t to
match the type of value returned by i_get_size() and the type of the value
passed to truncate_inode_pages_range()? Then you only need one additional
check, something like:

/* Check for an overflow when adding start+len into end */
if (start > (uint64_t)LLONG_MAX - len)
return -EINVAL;

Looking at the maximum values if we have start=0 and
len=(uint64_t)LLONG_MAX we would still continue but
len=(uint64_t)LLONG_MAX+1 would return -EINVAL. Similarly for
start=(uint64_t)LLONG_MAX and len=0 it would continue
but start=(uint64_t)LLONG_MAX+1 would return -EINVAL and that 
should allow start + len to be safely added and stored into an loff_t without
overflow. With this check start+len can never be more than (uint64_t)LLONG_MAX
which would make the other checks I suggested to ensure that neither start or 
end
were more than (uint64_t)LLONG_MAX unnecessary.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [PATCH] block: create ioctl to discard-or-zeroout a range of blocks

2015-11-11 Thread Seymour, Shane M
> which would make the other checks I suggested to ensure that neither start
> or end were more than (uint64_t)LLONG_MAX unnecessary.

My apologies I was wrong about what I said above - after thinking about it for 
longer you still need to make sure that at least len is not greater than 
(uint64_t)LLONG_MAX because in the calculation:

if (start > (uint64_t)LLONG_MAX - len)
return -EINVAL;

if len was more than (uint64_t)LLONG_MAX it would underflow and become a very 
large positive number and start would never be greater than that (and I said 
end when I should have said len).
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [PATCH] block: create ioctl to discard-or-zeroout a range of blocks

2015-11-10 Thread Seymour, Shane M
A quick question about this part of the patch:

> + uint64_t end = start + len - 1;

> + if (end >= i_size_read(bdev->bd_inode))
return -EINVAL;
 
> + /* Invalidate the page cache, including dirty pages */
> + mapping = bdev->bd_inode->i_mapping;
> + truncate_inode_pages_range(mapping, start, end);

blk_ioctl_zeroout accepts unsigned values for start and end (uint64_t) but 
loff_t types are turned from i_size_read() and passed as the 2nd and 3rd values 
to truncate_inode_pages_range() and loff_t is a signed value. It should be 
possible to pass in some values would overflow the calculation of end causing 
the test on the value of end and the result of i_size_read to pass but then end 
up passing a large unsigned value for in start that would be implicitly 
converted to signed in truncate_inode_pages_range. I was wondering if you'd 
tested passing in data that would cause sign conversion issues when passed into 
truncate_inode_pages_range (does it handle it gracefully?) or should this code:

if (start & 511)
return -EINVAL;
if (len & 511)
return -EINVAL;

be something more like this (for better sanity checking of your arguments) 
which will ensure that you don't have implicit conversion issues from unsigned 
to signed and ensure that the result of adding them together won't either:

if ((start & 511) || (start > (uint64_t)LLONG_MAX))
return -EINVAL;
if ((len & 511) ) || (len > (uint64_t)LLONG_MAX))
return -EINVAL;
if (end > (uint64_t)LLONG_MAX)
return -EINVAL;

My apologies in advance if I've made a mistake when looking at this and my 
concerns about unsigned values being implicitly converted to signed are 
unfounded (I would have hoped for compiler warnings about any implicit 
conversions though).

Thanks
Shane
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [PATCH] block: create ioctl to discard-or-zeroout a range of blocks

2015-11-10 Thread Seymour, Shane M
A quick question about this part of the patch:

> + uint64_t end = start + len - 1;

> + if (end >= i_size_read(bdev->bd_inode))
return -EINVAL;
 
> + /* Invalidate the page cache, including dirty pages */
> + mapping = bdev->bd_inode->i_mapping;
> + truncate_inode_pages_range(mapping, start, end);

blk_ioctl_zeroout accepts unsigned values for start and end (uint64_t) but 
loff_t types are turned from i_size_read() and passed as the 2nd and 3rd values 
to truncate_inode_pages_range() and loff_t is a signed value. It should be 
possible to pass in some values would overflow the calculation of end causing 
the test on the value of end and the result of i_size_read to pass but then end 
up passing a large unsigned value for in start that would be implicitly 
converted to signed in truncate_inode_pages_range. I was wondering if you'd 
tested passing in data that would cause sign conversion issues when passed into 
truncate_inode_pages_range (does it handle it gracefully?) or should this code:

if (start & 511)
return -EINVAL;
if (len & 511)
return -EINVAL;

be something more like this (for better sanity checking of your arguments) 
which will ensure that you don't have implicit conversion issues from unsigned 
to signed and ensure that the result of adding them together won't either:

if ((start & 511) || (start > (uint64_t)LLONG_MAX))
return -EINVAL;
if ((len & 511) ) || (len > (uint64_t)LLONG_MAX))
return -EINVAL;
if (end > (uint64_t)LLONG_MAX)
return -EINVAL;

My apologies in advance if I've made a mistake when looking at this and my 
concerns about unsigned values being implicitly converted to signed are 
unfounded (I would have hoped for compiler warnings about any implicit 
conversions though).

Thanks
Shane
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [PATCH RFC v3 0/7] epoll: Introduce new syscalls, epoll_ctl_batch and epoll_pwait1

2015-02-15 Thread Seymour, Shane M
I found the manual pages really confusing so I had a go at rewriting
them - there were places in the manual page that didn't match the
functionality provided by your code as well as I could tell).

My apologies for a few formatting issues though. I still don't like
parts of epoll_pwait1 but it's less confusing than it was.

You are free to take some or all or none of the changes.

I did have a question I marked with  below about what you
describe and what your code does.

1) epoll_ctl_batch
--

NAME
   epoll_ctl_batch - batch control interface for an epoll descriptor

SYNOPSIS

   #include 

   int epoll_ctl_batch(int epfd, int flags,
   int ncmds, struct epoll_ctl_cmd *cmds);

DESCRIPTION

   This system call is an extension of epoll_ctl(). The primary
   difference is that this system call allows you to batch multiple
   operations with the one system call. This provides a more efficient
   interface for updating events on this epoll file descriptor epfd.

   The flags argument is reserved and must be 0.

   The argument ncmds is the number of cmds entries being passed in.
   This number must be greater than 0.

   Each operation is specified as an element in the cmds array, defined as:

   struct epoll_ctl_cmd {

  /* Reserved flags for future extension, must be 0. */
  int flags;

  /* The same as epoll_ctl() op parameter. */
  int op;

  /* The same as epoll_ctl() fd parameter. */
  int fd;

  /* The same as the "events" field in struct epoll_event. */
  uint32_t events;

  /* The same as the "data" field in struct epoll_event. */
  uint64_t data;

  /* Output field, will be set to the return code after this
   * command is executed by kernel */
  int result;
   };

   This system call is not atomic when updating the epoll descriptor.
   All entries in cmds are executed in the order provided. If any cmds
   entry fails to be processed no further entries are processed and 
   the number of successfully processed entries is returned.

   Each single operation defined by a struct epoll_ctl_cmd has the same 
   semantics as an epoll_ctl(2) call. See the epoll_ctl() manual page
   for more information about how to correctly setup the members of a
   struct epoll_ctl_cmd.

   Upon completion of the call the result member of each struct 
epoll_ctl_cmd
   may be set to 0 (sucessfully completed) or an error code depending on the
   result of the command. If the kernel fails to change the result (for
   example the location of the cmds argument is fully or partly read only)
   the result member of each struct epoll_ctl_cmd may be unchanged. 

RETURN VALUE

   epoll_ctl_batch() returns a number greater than 0 to indicate the number
   of cmnd entries processed. If all entries have been processed this will
   equal the ncmds parameter passed in.

   If one or more parameters are incorrect the value returned is -1 with
   errno set appropriately - no cmds entries have been processed when this
   happens.

   If processing any entry in the cmds argument results in an error the
   number returned is the number of the failing entry - this number will be
   less than ncmds. Since ncmds must be greater than 0 a return value of
   0 indicates an error associated with the very first cmds entry. 
   A return value of 0 does not indicate a successful system call.

   To correctly test the return value from epoll_ctl_batch() use code 
similar
   to the following:

ret=epoll_ctl_batch(epfd, flags, ncmds, );
if (ret < ncmds) {
if (ret == -1) {
/* An argument was invalid */
} else {
/* ret contains the number of successful entries
 * processed. If you (mis?)use it as a C index 
it
 * will index directly to the failing entry to
 * get the result use cmds[ret].result which 
may 
 * contain the errno value associated with the
 * entry.
 */
}
} else {
/* Success */
}

ERRORS

   EINVAL flags is non-zero, or ncmds is less than or equal to zero, or
  cmds is NULL.

   ENOMEM There was insufficient memory to handle the requested op control
  operation.

   EFAULT The memory area pointed to by cmds is not accessible with read
  permissions.

   In the event that the 

RE: [PATCH RFC v3 0/7] epoll: Introduce new syscalls, epoll_ctl_batch and epoll_pwait1

2015-02-15 Thread Seymour, Shane M
I found the manual pages really confusing so I had a go at rewriting
them - there were places in the manual page that didn't match the
functionality provided by your code as well as I could tell).

My apologies for a few formatting issues though. I still don't like
parts of epoll_pwait1 but it's less confusing than it was.

You are free to take some or all or none of the changes.

I did have a question I marked with  below about what you
describe and what your code does.

1) epoll_ctl_batch
--

NAME
   epoll_ctl_batch - batch control interface for an epoll descriptor

SYNOPSIS

   #include sys/epoll.h

   int epoll_ctl_batch(int epfd, int flags,
   int ncmds, struct epoll_ctl_cmd *cmds);

DESCRIPTION

   This system call is an extension of epoll_ctl(). The primary
   difference is that this system call allows you to batch multiple
   operations with the one system call. This provides a more efficient
   interface for updating events on this epoll file descriptor epfd.

   The flags argument is reserved and must be 0.

   The argument ncmds is the number of cmds entries being passed in.
   This number must be greater than 0.

   Each operation is specified as an element in the cmds array, defined as:

   struct epoll_ctl_cmd {

  /* Reserved flags for future extension, must be 0. */
  int flags;

  /* The same as epoll_ctl() op parameter. */
  int op;

  /* The same as epoll_ctl() fd parameter. */
  int fd;

  /* The same as the events field in struct epoll_event. */
  uint32_t events;

  /* The same as the data field in struct epoll_event. */
  uint64_t data;

  /* Output field, will be set to the return code after this
   * command is executed by kernel */
  int result;
   };

   This system call is not atomic when updating the epoll descriptor.
   All entries in cmds are executed in the order provided. If any cmds
   entry fails to be processed no further entries are processed and 
   the number of successfully processed entries is returned.

   Each single operation defined by a struct epoll_ctl_cmd has the same 
   semantics as an epoll_ctl(2) call. See the epoll_ctl() manual page
   for more information about how to correctly setup the members of a
   struct epoll_ctl_cmd.

   Upon completion of the call the result member of each struct 
epoll_ctl_cmd
   may be set to 0 (sucessfully completed) or an error code depending on the
   result of the command. If the kernel fails to change the result (for
   example the location of the cmds argument is fully or partly read only)
   the result member of each struct epoll_ctl_cmd may be unchanged. 

RETURN VALUE

   epoll_ctl_batch() returns a number greater than 0 to indicate the number
   of cmnd entries processed. If all entries have been processed this will
   equal the ncmds parameter passed in.

   If one or more parameters are incorrect the value returned is -1 with
   errno set appropriately - no cmds entries have been processed when this
   happens.

   If processing any entry in the cmds argument results in an error the
   number returned is the number of the failing entry - this number will be
   less than ncmds. Since ncmds must be greater than 0 a return value of
   0 indicates an error associated with the very first cmds entry. 
   A return value of 0 does not indicate a successful system call.

   To correctly test the return value from epoll_ctl_batch() use code 
similar
   to the following:

ret=epoll_ctl_batch(epfd, flags, ncmds, cmds);
if (ret  ncmds) {
if (ret == -1) {
/* An argument was invalid */
} else {
/* ret contains the number of successful entries
 * processed. If you (mis?)use it as a C index 
it
 * will index directly to the failing entry to
 * get the result use cmds[ret].result which 
may 
 * contain the errno value associated with the
 * entry.
 */
}
} else {
/* Success */
}

ERRORS

   EINVAL flags is non-zero, or ncmds is less than or equal to zero, or
  cmds is NULL.

   ENOMEM There was insufficient memory to handle the requested op control
  operation.

   EFAULT The memory area pointed to by cmds is not accessible with read
  permissions.

   In the event 

3.10.0-rcX vmstat regression

2013-06-10 Thread Shane Shrybman
Hello,

x86_64 with 32 bit user space, seen on all 3.10.0-rc's

A typical 'vmstat 1' run looks like this:

~$ vmstat 1
procs ---memory-- ---swap-- -io -system--
cpu
 r  b   swpd   free   buff  cache   si   sobibo   in   cs us sy
id wa
 0  0  0 3624776  26060 209808  0   0  1232 7  399  463  1  0 81 18
 0  0  0 3624816  26060 209856  0   0 0 0  625  526  0  0 100  0
 0  0  0 3624612  26064 209852  0   0 456 1174 1574  0  0 99  1
 1  0  0 3624652  26064 209900  0   0 4 0 1501 2126  0  0 100  0
 1  0  0 3624576  26076 209888  0   0 8   132 1299 1941  0  0 98  2
 1  0  0 3624044  26088 210268  0   0   380 0 1642 2996  0  0 93  7
 1  0  0 3628992  26140 219896  0   0  2783 7 1727 3284  0  0 85 15
 0  1  0 3588504  26288 244572  0   0  5955 0 2096 3874  0  0 27 73
 1  2  0 3572732  26428 253152  0   0  8792   212 1730 2374  0  0 27 73
 1  7  0 3566128  26492 257696  0   0  1915   268 1832 2885  0  0 11 89
 5 37  0 3527996  26576 270212  0   0  5668 0 2382 5117  0  0  9 91
 3  3  0 3471676  26668 284616  0   0  850412 2334 4502  0  0 15 85
 1  5  0 3485732  26852 264932  0   0  4556 0 1861 3648  0  0  8 92
 3  4  0 3438112  26872 270956  0   0  1822 0 1770 5000  0  0  0 100
 5  2  0 3405560  26916 274628  0   0  341396 2360 5571  0  0  9 91
 5  1  0 3378800  26952 273024  0   0  1805 0 1968 4489  0  0  0 100
Floating point exception

Two problems are shown: the floating point exception and the user and
system stats are always 0, it looks like us and sys time are showing up
as wait time.

CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ_COMMON=y
# CONFIG_HZ_PERIODIC is not set
# CONFIG_NO_HZ_IDLE is not set
CONFIG_NO_HZ_FULL=y
CONFIG_NO_HZ_FULL_ALL=y
CONFIG_NO_HZ=y
# CONFIG_HIGH_RES_TIMERS is not set

Sorry if this report is a duplicate,

Shane

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


3.10.0-rcX vmstat regression

2013-06-10 Thread Shane Shrybman
Hello,

x86_64 with 32 bit user space, seen on all 3.10.0-rc's

A typical 'vmstat 1' run looks like this:

~$ vmstat 1
procs ---memory-- ---swap-- -io -system--
cpu
 r  b   swpd   free   buff  cache   si   sobibo   in   cs us sy
id wa
 0  0  0 3624776  26060 209808  0   0  1232 7  399  463  1  0 81 18
 0  0  0 3624816  26060 209856  0   0 0 0  625  526  0  0 100  0
 0  0  0 3624612  26064 209852  0   0 456 1174 1574  0  0 99  1
 1  0  0 3624652  26064 209900  0   0 4 0 1501 2126  0  0 100  0
 1  0  0 3624576  26076 209888  0   0 8   132 1299 1941  0  0 98  2
 1  0  0 3624044  26088 210268  0   0   380 0 1642 2996  0  0 93  7
 1  0  0 3628992  26140 219896  0   0  2783 7 1727 3284  0  0 85 15
 0  1  0 3588504  26288 244572  0   0  5955 0 2096 3874  0  0 27 73
 1  2  0 3572732  26428 253152  0   0  8792   212 1730 2374  0  0 27 73
 1  7  0 3566128  26492 257696  0   0  1915   268 1832 2885  0  0 11 89
 5 37  0 3527996  26576 270212  0   0  5668 0 2382 5117  0  0  9 91
 3  3  0 3471676  26668 284616  0   0  850412 2334 4502  0  0 15 85
 1  5  0 3485732  26852 264932  0   0  4556 0 1861 3648  0  0  8 92
 3  4  0 3438112  26872 270956  0   0  1822 0 1770 5000  0  0  0 100
 5  2  0 3405560  26916 274628  0   0  341396 2360 5571  0  0  9 91
 5  1  0 3378800  26952 273024  0   0  1805 0 1968 4489  0  0  0 100
Floating point exception

Two problems are shown: the floating point exception and the user and
system stats are always 0, it looks like us and sys time are showing up
as wait time.

CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ_COMMON=y
# CONFIG_HZ_PERIODIC is not set
# CONFIG_NO_HZ_IDLE is not set
CONFIG_NO_HZ_FULL=y
CONFIG_NO_HZ_FULL_ALL=y
CONFIG_NO_HZ=y
# CONFIG_HIGH_RES_TIMERS is not set

Sorry if this report is a duplicate,

Shane

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[RFC] Implementing tape statistics

2013-03-20 Thread Seymour, Shane M
Before you start reading this I want to apologize in advance for the length of 
this email. The length is important though to make sure all of the arguments 
and counter-arguments are represented in asking for feedback about how tape 
statistics would be best implemented.

There is some demand for the provision of tape IO statistics by users of the 
enterprise distributions, in particular those possessing large scale tape 
libraries. The provision of interfaces for getting statistics about tape I/O 
for use by utilities such as sar is a feature present in most commercial UNIX 
distributions.

Several patches have been produced and presented to linux-scsi mailing list but 
it seems that there are differences of opinion that cannot be reconciled and 
hence currently no acceptance of the proposed solutions. I have therefore 
decided to post to the wider kernel list to see if we can come to some 
consensus on what one of these (or other) should be adopted.

No patches are presented in this email for the sake of brevity, it's only a 
summary of the implementation and consequences along with discussion points for 
each. Note that this is not an attempt to work around the feedback gained on 
the linux-scsi mailing list but an attempt to get a wider consensus on what 
would be an acceptable implementation of a tape statistics interface.


Option #1
=

Provide device based stats vis sysfs:

/sys/class/scsi_tape/stNN/stats   (where NN is the tape device instance number)

The stat file provides the following in a one line entry suitable for a single 
fgets() and processing by sscanf():

+/* Tape stats */
+   u64 read_byte_cnt;  /* bytes read since tape open */
+   u64 write_byte_cnt; /* bytes written since tape open */
+   u64 in_flight;  /* Number of I/Os in flight */
+   u64 read_cnt;   /* Count of read requests since tape open */
+   u64 write_cnt;  /* Count of write requests since tape open */
+   u64 other_cnt;  /* Count of other requests since tape open
+  either implicit (from driver) or from
+  user space via ioctl. */
+   u64 read_ticks; /* Ticks spent completing read requests */
+   u64 write_ticks;/* Ticks spent completing write requests */
+   u64 io_ticks;   /* Ticks spent doing any I/O */
+   u64 stamp;  /* holds time request was queued */

The file contents are almost the same as the stat file for disks except the 
merge statistics are always 0 (since tape drives are sequential merged I/Os 
don't make sense) and the inflight value is almost always either a 0 or 1 since 
the st module always only has either one read or write outstanding. An 
additional field is added to the end of the file - a count of other I/Os - this 
could be commands issued by the driver within the kernel (e.g. rewind) or via 
an ioctl from user space. For tape drives some commands involving actions like 
tape movement can take a long time, it's important to keep track of scsi 
requests sent to the tape drive other than reads and writes so when delays 
happen they can be explained.

With some future patches to iostat this data will be reported, an example set 
of data is (the extra other_cnt data allows an average wait for all (a_await) 
and other I/Os per second (oio/s)):

tape:   wr/s   KiB_write/srd/s  KiB_read/s  r_await  w_await  a_await  oio/s
st0   186.50 46.750.000.000.0000.2760.276   0.00
st1   186.00 93.000.000.000.0000.1800.180   0.00
st2 0.00  0.00  181.50   45.500.3470.0000.347   0.00
st3 0.00  0.00  183.00   45.750.2240.0000.224   0.00

## This is our preferred method of implementation since it is efficient for 
both kernel and user-space (also requires fewest code changes), it also matches 
that already presented for the disk block subsys, see for example:

# grep . /sys/block/sd*/stat
/sys/block/sda/stat:   27351 6890   609272   22812936810   920727  
7660304  13339500   556889  1562009
/sys/block/sdb/stat:2369 6762188903900300   
 000 405939002

## SCSI maintainers counter-point: "I'm afraid we can't do it the way you're 
proposing.  files in sysfs must conform to the one value per file rule (so we 
avoid the ABI nastiness that plagues /proc).  You can create a stat directory 
with a bunch of files, but not a single file that gives all values.

## My counter:

I can only assume it (sysfs blk_subsys stat file) was implemented this way for 
the sake of efficiency, eg avoid a huge amount of file open/read/close calls in 
sar/iostat.  It's not unusual for us to see over a thousand block devices on 
enterprise servers, multiply that by the number of above entries and you would 
be talking about 9 x block-dev-count per iostat read 

[RFC] Implementing tape statistics

2013-03-20 Thread Seymour, Shane M
Before you start reading this I want to apologize in advance for the length of 
this email. The length is important though to make sure all of the arguments 
and counter-arguments are represented in asking for feedback about how tape 
statistics would be best implemented.

There is some demand for the provision of tape IO statistics by users of the 
enterprise distributions, in particular those possessing large scale tape 
libraries. The provision of interfaces for getting statistics about tape I/O 
for use by utilities such as sar is a feature present in most commercial UNIX 
distributions.

Several patches have been produced and presented to linux-scsi mailing list but 
it seems that there are differences of opinion that cannot be reconciled and 
hence currently no acceptance of the proposed solutions. I have therefore 
decided to post to the wider kernel list to see if we can come to some 
consensus on what one of these (or other) should be adopted.

No patches are presented in this email for the sake of brevity, it's only a 
summary of the implementation and consequences along with discussion points for 
each. Note that this is not an attempt to work around the feedback gained on 
the linux-scsi mailing list but an attempt to get a wider consensus on what 
would be an acceptable implementation of a tape statistics interface.


Option #1
=

Provide device based stats vis sysfs:

/sys/class/scsi_tape/stNN/stats   (where NN is the tape device instance number)

The stat file provides the following in a one line entry suitable for a single 
fgets() and processing by sscanf():

+/* Tape stats */
+   u64 read_byte_cnt;  /* bytes read since tape open */
+   u64 write_byte_cnt; /* bytes written since tape open */
+   u64 in_flight;  /* Number of I/Os in flight */
+   u64 read_cnt;   /* Count of read requests since tape open */
+   u64 write_cnt;  /* Count of write requests since tape open */
+   u64 other_cnt;  /* Count of other requests since tape open
+  either implicit (from driver) or from
+  user space via ioctl. */
+   u64 read_ticks; /* Ticks spent completing read requests */
+   u64 write_ticks;/* Ticks spent completing write requests */
+   u64 io_ticks;   /* Ticks spent doing any I/O */
+   u64 stamp;  /* holds time request was queued */

The file contents are almost the same as the stat file for disks except the 
merge statistics are always 0 (since tape drives are sequential merged I/Os 
don't make sense) and the inflight value is almost always either a 0 or 1 since 
the st module always only has either one read or write outstanding. An 
additional field is added to the end of the file - a count of other I/Os - this 
could be commands issued by the driver within the kernel (e.g. rewind) or via 
an ioctl from user space. For tape drives some commands involving actions like 
tape movement can take a long time, it's important to keep track of scsi 
requests sent to the tape drive other than reads and writes so when delays 
happen they can be explained.

With some future patches to iostat this data will be reported, an example set 
of data is (the extra other_cnt data allows an average wait for all (a_await) 
and other I/Os per second (oio/s)):

tape:   wr/s   KiB_write/srd/s  KiB_read/s  r_await  w_await  a_await  oio/s
st0   186.50 46.750.000.000.0000.2760.276   0.00
st1   186.00 93.000.000.000.0000.1800.180   0.00
st2 0.00  0.00  181.50   45.500.3470.0000.347   0.00
st3 0.00  0.00  183.00   45.750.2240.0000.224   0.00

## This is our preferred method of implementation since it is efficient for 
both kernel and user-space (also requires fewest code changes), it also matches 
that already presented for the disk block subsys, see for example:

# grep . /sys/block/sd*/stat
/sys/block/sda/stat:   27351 6890   609272   22812936810   920727  
7660304  13339500   556889  1562009
/sys/block/sdb/stat:2369 6762188903900300   
 000 405939002

## SCSI maintainers counter-point: I'm afraid we can't do it the way you're 
proposing.  files in sysfs must conform to the one value per file rule (so we 
avoid the ABI nastiness that plagues /proc).  You can create a stat directory 
with a bunch of files, but not a single file that gives all values.

## My counter:

I can only assume it (sysfs blk_subsys stat file) was implemented this way for 
the sake of efficiency, eg avoid a huge amount of file open/read/close calls in 
sar/iostat.  It's not unusual for us to see over a thousand block devices on 
enterprise servers, multiply that by the number of above entries and you would 
be talking about 9 x block-dev-count per iostat read 

RE: [3.8-{rc1,rc2}] ata1.00: failed to get Identify Device Data, Emask 0x1

2013-01-04 Thread Huang, Shane
> OK, I see the patch I mentioned to fix the problem was later reverted [1].
> The real fix is "libata: replace sata_settings with devslp_timing" [2].

Yes, please use [2] which can also be found in kernel bugzilla #51881
and is pending on Jeff's acceptance. Sorry for the trouble to you guys.

Thanks,
Shane


RE: [3.8-{rc1,rc2}] ata1.00: failed to get Identify Device Data, Emask 0x1

2013-01-04 Thread Huang, Shane
 OK, I see the patch I mentioned to fix the problem was later reverted [1].
 The real fix is libata: replace sata_settings with devslp_timing [2].

Yes, please use [2] which can also be found in kernel bugzilla #51881
and is pending on Jeff's acceptance. Sorry for the trouble to you guys.

Thanks,
Shane


[PATCH v2] MIPS: MSP71xx: Move include files

2012-12-24 Thread Shane McDonald
Now that Yosemite's gone we can move the MSP71xx include files
one level up.

Signed-off-by: Shane McDonald 
---
Patch history:
V1: Original patch
V2: Use format-patch's -M option to indicate file renames

 .../cpu-feature-overrides.h|0
 .../msp71xx => mach-pmcs-msp71xx}/gpio.h   |0
 .../msp71xx => mach-pmcs-msp71xx}/msp_cic_int.h|0
 .../msp_gpio_macros.h  |0
 .../msp71xx => mach-pmcs-msp71xx}/msp_int.h|0
 .../msp71xx => mach-pmcs-msp71xx}/msp_pci.h|0
 .../msp71xx => mach-pmcs-msp71xx}/msp_prom.h   |0
 .../msp71xx => mach-pmcs-msp71xx}/msp_regops.h |0
 .../msp71xx => mach-pmcs-msp71xx}/msp_regs.h   |0
 .../msp71xx => mach-pmcs-msp71xx}/msp_slp_int.h|0
 .../msp71xx => mach-pmcs-msp71xx}/msp_usb.h|0
 .../msp71xx => mach-pmcs-msp71xx}/war.h|0
 arch/mips/pmcs-msp71xx/Platform|2 +-
 13 files changed, 1 insertions(+), 1 deletions(-)
 rename arch/mips/include/asm/{pmc-sierra/msp71xx => 
mach-pmcs-msp71xx}/cpu-feature-overrides.h (100%)
 rename arch/mips/include/asm/{pmc-sierra/msp71xx => mach-pmcs-msp71xx}/gpio.h 
(100%)
 rename arch/mips/include/asm/{pmc-sierra/msp71xx => 
mach-pmcs-msp71xx}/msp_cic_int.h (100%)
 rename arch/mips/include/asm/{pmc-sierra/msp71xx => 
mach-pmcs-msp71xx}/msp_gpio_macros.h (100%)
 rename arch/mips/include/asm/{pmc-sierra/msp71xx => 
mach-pmcs-msp71xx}/msp_int.h (100%)
 rename arch/mips/include/asm/{pmc-sierra/msp71xx => 
mach-pmcs-msp71xx}/msp_pci.h (100%)
 rename arch/mips/include/asm/{pmc-sierra/msp71xx => 
mach-pmcs-msp71xx}/msp_prom.h (100%)
 rename arch/mips/include/asm/{pmc-sierra/msp71xx => 
mach-pmcs-msp71xx}/msp_regops.h (100%)
 rename arch/mips/include/asm/{pmc-sierra/msp71xx => 
mach-pmcs-msp71xx}/msp_regs.h (100%)
 rename arch/mips/include/asm/{pmc-sierra/msp71xx => 
mach-pmcs-msp71xx}/msp_slp_int.h (100%)
 rename arch/mips/include/asm/{pmc-sierra/msp71xx => 
mach-pmcs-msp71xx}/msp_usb.h (100%)
 rename arch/mips/include/asm/{pmc-sierra/msp71xx => mach-pmcs-msp71xx}/war.h 
(100%)

diff --git a/arch/mips/include/asm/pmc-sierra/msp71xx/cpu-feature-overrides.h 
b/arch/mips/include/asm/mach-pmcs-msp71xx/cpu-feature-overrides.h
similarity index 100%
rename from arch/mips/include/asm/pmc-sierra/msp71xx/cpu-feature-overrides.h
rename to arch/mips/include/asm/mach-pmcs-msp71xx/cpu-feature-overrides.h
diff --git a/arch/mips/include/asm/pmc-sierra/msp71xx/gpio.h 
b/arch/mips/include/asm/mach-pmcs-msp71xx/gpio.h
similarity index 100%
rename from arch/mips/include/asm/pmc-sierra/msp71xx/gpio.h
rename to arch/mips/include/asm/mach-pmcs-msp71xx/gpio.h
diff --git a/arch/mips/include/asm/pmc-sierra/msp71xx/msp_cic_int.h 
b/arch/mips/include/asm/mach-pmcs-msp71xx/msp_cic_int.h
similarity index 100%
rename from arch/mips/include/asm/pmc-sierra/msp71xx/msp_cic_int.h
rename to arch/mips/include/asm/mach-pmcs-msp71xx/msp_cic_int.h
diff --git a/arch/mips/include/asm/pmc-sierra/msp71xx/msp_gpio_macros.h 
b/arch/mips/include/asm/mach-pmcs-msp71xx/msp_gpio_macros.h
similarity index 100%
rename from arch/mips/include/asm/pmc-sierra/msp71xx/msp_gpio_macros.h
rename to arch/mips/include/asm/mach-pmcs-msp71xx/msp_gpio_macros.h
diff --git a/arch/mips/include/asm/pmc-sierra/msp71xx/msp_int.h 
b/arch/mips/include/asm/mach-pmcs-msp71xx/msp_int.h
similarity index 100%
rename from arch/mips/include/asm/pmc-sierra/msp71xx/msp_int.h
rename to arch/mips/include/asm/mach-pmcs-msp71xx/msp_int.h
diff --git a/arch/mips/include/asm/pmc-sierra/msp71xx/msp_pci.h 
b/arch/mips/include/asm/mach-pmcs-msp71xx/msp_pci.h
similarity index 100%
rename from arch/mips/include/asm/pmc-sierra/msp71xx/msp_pci.h
rename to arch/mips/include/asm/mach-pmcs-msp71xx/msp_pci.h
diff --git a/arch/mips/include/asm/pmc-sierra/msp71xx/msp_prom.h 
b/arch/mips/include/asm/mach-pmcs-msp71xx/msp_prom.h
similarity index 100%
rename from arch/mips/include/asm/pmc-sierra/msp71xx/msp_prom.h
rename to arch/mips/include/asm/mach-pmcs-msp71xx/msp_prom.h
diff --git a/arch/mips/include/asm/pmc-sierra/msp71xx/msp_regops.h 
b/arch/mips/include/asm/mach-pmcs-msp71xx/msp_regops.h
similarity index 100%
rename from arch/mips/include/asm/pmc-sierra/msp71xx/msp_regops.h
rename to arch/mips/include/asm/mach-pmcs-msp71xx/msp_regops.h
diff --git a/arch/mips/include/asm/pmc-sierra/msp71xx/msp_regs.h 
b/arch/mips/include/asm/mach-pmcs-msp71xx/msp_regs.h
similarity index 100%
rename from arch/mips/include/asm/pmc-sierra/msp71xx/msp_regs.h
rename to arch/mips/include/asm/mach-pmcs-msp71xx/msp_regs.h
diff --git a/arch/mips/include/asm/pmc-sierra/msp71xx/msp_slp_int.h 
b/arch/mips/include/asm/mach-pmcs-msp71xx/msp_slp_int.h
similarity index 100%
rename from arch/mips/include/asm/pmc-sierra/msp71xx/msp_slp_int.h
rename to arch/mips/include/asm/mach-pmcs-msp71xx/msp_slp_int.h
diff --git a/arch/mips/include/asm/pmc-s

[PATCH v2] MIPS: MSP71xx: Move include files

2012-12-24 Thread Shane McDonald
Now that Yosemite's gone we can move the MSP71xx include files
one level up.

Signed-off-by: Shane McDonald mcdonald.sh...@gmail.com
---
Patch history:
V1: Original patch
V2: Use format-patch's -M option to indicate file renames

 .../cpu-feature-overrides.h|0
 .../msp71xx = mach-pmcs-msp71xx}/gpio.h   |0
 .../msp71xx = mach-pmcs-msp71xx}/msp_cic_int.h|0
 .../msp_gpio_macros.h  |0
 .../msp71xx = mach-pmcs-msp71xx}/msp_int.h|0
 .../msp71xx = mach-pmcs-msp71xx}/msp_pci.h|0
 .../msp71xx = mach-pmcs-msp71xx}/msp_prom.h   |0
 .../msp71xx = mach-pmcs-msp71xx}/msp_regops.h |0
 .../msp71xx = mach-pmcs-msp71xx}/msp_regs.h   |0
 .../msp71xx = mach-pmcs-msp71xx}/msp_slp_int.h|0
 .../msp71xx = mach-pmcs-msp71xx}/msp_usb.h|0
 .../msp71xx = mach-pmcs-msp71xx}/war.h|0
 arch/mips/pmcs-msp71xx/Platform|2 +-
 13 files changed, 1 insertions(+), 1 deletions(-)
 rename arch/mips/include/asm/{pmc-sierra/msp71xx = 
mach-pmcs-msp71xx}/cpu-feature-overrides.h (100%)
 rename arch/mips/include/asm/{pmc-sierra/msp71xx = mach-pmcs-msp71xx}/gpio.h 
(100%)
 rename arch/mips/include/asm/{pmc-sierra/msp71xx = 
mach-pmcs-msp71xx}/msp_cic_int.h (100%)
 rename arch/mips/include/asm/{pmc-sierra/msp71xx = 
mach-pmcs-msp71xx}/msp_gpio_macros.h (100%)
 rename arch/mips/include/asm/{pmc-sierra/msp71xx = 
mach-pmcs-msp71xx}/msp_int.h (100%)
 rename arch/mips/include/asm/{pmc-sierra/msp71xx = 
mach-pmcs-msp71xx}/msp_pci.h (100%)
 rename arch/mips/include/asm/{pmc-sierra/msp71xx = 
mach-pmcs-msp71xx}/msp_prom.h (100%)
 rename arch/mips/include/asm/{pmc-sierra/msp71xx = 
mach-pmcs-msp71xx}/msp_regops.h (100%)
 rename arch/mips/include/asm/{pmc-sierra/msp71xx = 
mach-pmcs-msp71xx}/msp_regs.h (100%)
 rename arch/mips/include/asm/{pmc-sierra/msp71xx = 
mach-pmcs-msp71xx}/msp_slp_int.h (100%)
 rename arch/mips/include/asm/{pmc-sierra/msp71xx = 
mach-pmcs-msp71xx}/msp_usb.h (100%)
 rename arch/mips/include/asm/{pmc-sierra/msp71xx = mach-pmcs-msp71xx}/war.h 
(100%)

diff --git a/arch/mips/include/asm/pmc-sierra/msp71xx/cpu-feature-overrides.h 
b/arch/mips/include/asm/mach-pmcs-msp71xx/cpu-feature-overrides.h
similarity index 100%
rename from arch/mips/include/asm/pmc-sierra/msp71xx/cpu-feature-overrides.h
rename to arch/mips/include/asm/mach-pmcs-msp71xx/cpu-feature-overrides.h
diff --git a/arch/mips/include/asm/pmc-sierra/msp71xx/gpio.h 
b/arch/mips/include/asm/mach-pmcs-msp71xx/gpio.h
similarity index 100%
rename from arch/mips/include/asm/pmc-sierra/msp71xx/gpio.h
rename to arch/mips/include/asm/mach-pmcs-msp71xx/gpio.h
diff --git a/arch/mips/include/asm/pmc-sierra/msp71xx/msp_cic_int.h 
b/arch/mips/include/asm/mach-pmcs-msp71xx/msp_cic_int.h
similarity index 100%
rename from arch/mips/include/asm/pmc-sierra/msp71xx/msp_cic_int.h
rename to arch/mips/include/asm/mach-pmcs-msp71xx/msp_cic_int.h
diff --git a/arch/mips/include/asm/pmc-sierra/msp71xx/msp_gpio_macros.h 
b/arch/mips/include/asm/mach-pmcs-msp71xx/msp_gpio_macros.h
similarity index 100%
rename from arch/mips/include/asm/pmc-sierra/msp71xx/msp_gpio_macros.h
rename to arch/mips/include/asm/mach-pmcs-msp71xx/msp_gpio_macros.h
diff --git a/arch/mips/include/asm/pmc-sierra/msp71xx/msp_int.h 
b/arch/mips/include/asm/mach-pmcs-msp71xx/msp_int.h
similarity index 100%
rename from arch/mips/include/asm/pmc-sierra/msp71xx/msp_int.h
rename to arch/mips/include/asm/mach-pmcs-msp71xx/msp_int.h
diff --git a/arch/mips/include/asm/pmc-sierra/msp71xx/msp_pci.h 
b/arch/mips/include/asm/mach-pmcs-msp71xx/msp_pci.h
similarity index 100%
rename from arch/mips/include/asm/pmc-sierra/msp71xx/msp_pci.h
rename to arch/mips/include/asm/mach-pmcs-msp71xx/msp_pci.h
diff --git a/arch/mips/include/asm/pmc-sierra/msp71xx/msp_prom.h 
b/arch/mips/include/asm/mach-pmcs-msp71xx/msp_prom.h
similarity index 100%
rename from arch/mips/include/asm/pmc-sierra/msp71xx/msp_prom.h
rename to arch/mips/include/asm/mach-pmcs-msp71xx/msp_prom.h
diff --git a/arch/mips/include/asm/pmc-sierra/msp71xx/msp_regops.h 
b/arch/mips/include/asm/mach-pmcs-msp71xx/msp_regops.h
similarity index 100%
rename from arch/mips/include/asm/pmc-sierra/msp71xx/msp_regops.h
rename to arch/mips/include/asm/mach-pmcs-msp71xx/msp_regops.h
diff --git a/arch/mips/include/asm/pmc-sierra/msp71xx/msp_regs.h 
b/arch/mips/include/asm/mach-pmcs-msp71xx/msp_regs.h
similarity index 100%
rename from arch/mips/include/asm/pmc-sierra/msp71xx/msp_regs.h
rename to arch/mips/include/asm/mach-pmcs-msp71xx/msp_regs.h
diff --git a/arch/mips/include/asm/pmc-sierra/msp71xx/msp_slp_int.h 
b/arch/mips/include/asm/mach-pmcs-msp71xx/msp_slp_int.h
similarity index 100%
rename from arch/mips/include/asm/pmc-sierra/msp71xx/msp_slp_int.h
rename to arch/mips/include/asm/mach-pmcs-msp71xx/msp_slp_int.h
diff --git a/arch/mips/include/asm/pmc-sierra/msp71xx/msp_usb.h 
b/arch/mips/include/asm/mach-pmcs-msp71xx

MIPS: MSP71xx: Indicate new location of source files in Platform file

2012-12-23 Thread Shane McDonald
The source files for the MSP71xx support code have been moved
in commit 13a347ef60c68e490809dad8fcf79c25eabc4d58,
"MIPS: MSP71xx: Move code." Update the Platform file
to indicate the new location.

Signed-off-by: Shane McDonald 
---
 arch/mips/pmcs-msp71xx/Platform |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/mips/pmcs-msp71xx/Platform b/arch/mips/pmcs-msp71xx/Platform
index 17299f9..9a86e29 100644
--- a/arch/mips/pmcs-msp71xx/Platform
+++ b/arch/mips/pmcs-msp71xx/Platform
@@ -1,7 +1,7 @@
 #
 # PMC-Sierra MSP SOCs
 #
-platform-$(CONFIG_PMC_MSP) += pmc-sierra/
-cflags-$(CONFIG_PMC_MSP)   += 
-I$(srctree)/arch/mips/include/asm/pmc-sierra \
+platform-$(CONFIG_PMC_MSP) += pmcs-msp71xx/
+cflags-$(CONFIG_PMC_MSP)   += 
-I$(srctree)/arch/mips/include/asm/pmc-sierra/msp71xx \
-mno-branch-likely
 load-$(CONFIG_PMC_MSP) += 0x8010
-- 
1.7.2.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


MIPS: MSP71xx: Indicate new location of source files in Platform file

2012-12-23 Thread Shane McDonald
The source files for the MSP71xx support code have been moved
in commit 13a347ef60c68e490809dad8fcf79c25eabc4d58,
MIPS: MSP71xx: Move code. Update the Platform file
to indicate the new location.

Signed-off-by: Shane McDonald mcdonald.sh...@gmail.com
---
 arch/mips/pmcs-msp71xx/Platform |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/mips/pmcs-msp71xx/Platform b/arch/mips/pmcs-msp71xx/Platform
index 17299f9..9a86e29 100644
--- a/arch/mips/pmcs-msp71xx/Platform
+++ b/arch/mips/pmcs-msp71xx/Platform
@@ -1,7 +1,7 @@
 #
 # PMC-Sierra MSP SOCs
 #
-platform-$(CONFIG_PMC_MSP) += pmc-sierra/
-cflags-$(CONFIG_PMC_MSP)   += 
-I$(srctree)/arch/mips/include/asm/pmc-sierra \
+platform-$(CONFIG_PMC_MSP) += pmcs-msp71xx/
+cflags-$(CONFIG_PMC_MSP)   += 
-I$(srctree)/arch/mips/include/asm/pmc-sierra/msp71xx \
-mno-branch-likely
 load-$(CONFIG_PMC_MSP) += 0x8010
-- 
1.7.2.5

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: RM9000 / E9000, MSP71xx class processors, SOCs and eval boards

2012-12-06 Thread Shane McDonald
On Thu, Dec 6, 2012 at 10:00 AM, Ralf Baechle  wrote:
> Folks,
>
> since many years the support code for those devices is rusting away in
> the lmo git tree and frankly, I'd get rid of it because there's been
> very few patch submissions or any kind of indication that somebody
> still cares.  In short, this has turned into a waste of resource not
> least my time.
>
> So, is anybody still interested in maintaining that code?  If so, you
> better attach a bunch of patches to your reply.
>
>   Ralf
>

I'm interested in the MSP71xx eval board, although I may be
the only person in the world who cares.  Specifically, I use the
msp71xx_defconfig.  3.7-rc8 compiles with gcc-4.6.3
without requiring any patches.

I don't know when the last time the RM9000 was compilable,
but I have no interest in that, nor do I have interest in the
FPGA or eval board versions of the MSP7120 (no hardware to
test with).

I had hoped that someone from PMC-Sierra would respond, but
maybe they don't care anymore...

Shane McDonald
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: RM9000 / E9000, MSP71xx class processors, SOCs and eval boards

2012-12-06 Thread Shane McDonald
On Thu, Dec 6, 2012 at 10:00 AM, Ralf Baechle r...@linux-mips.org wrote:
 Folks,

 since many years the support code for those devices is rusting away in
 the lmo git tree and frankly, I'd get rid of it because there's been
 very few patch submissions or any kind of indication that somebody
 still cares.  In short, this has turned into a waste of resource not
 least my time.

 So, is anybody still interested in maintaining that code?  If so, you
 better attach a bunch of patches to your reply.

   Ralf


I'm interested in the MSP71xx eval board, although I may be
the only person in the world who cares.  Specifically, I use the
msp71xx_defconfig.  3.7-rc8 compiles with gcc-4.6.3
without requiring any patches.

I don't know when the last time the RM9000 was compilable,
but I have no interest in that, nor do I have interest in the
FPGA or eval board versions of the MSP7120 (no hardware to
test with).

I had hoped that someone from PMC-Sierra would respond, but
maybe they don't care anymore...

Shane McDonald
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: ata4.00: failed to get Identify Device Data, Emask 0x1

2012-11-16 Thread Huang, Shane
> I tried word 78 bit 5(Hardware Feature Control) which does not work,
> it is 0 on my HDD sample with log 30h page 08h and DevSlp supported.
> 
> Seems that word 78 bit 5 is only the sufficient condition, not the
> essential condition. Do you guys have suggestion?

Eventually I received the confirmation from the DevSlp HDD vendor,
bit 5 should be and will be set in production drives with log 30h
page 08h supported. So I will submit a patch to use it instead.


Hi Jeff,

I don't know when I will receive some production drives to verify
my patch, are you okay if I submit my patch first without testing
so as to meet kernel 3.7 bug fix window?

Thanks,
Shane

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: ata4.00: failed to get Identify Device Data, Emask 0x1

2012-11-16 Thread Huang, Shane
 I tried word 78 bit 5(Hardware Feature Control) which does not work,
 it is 0 on my HDD sample with log 30h page 08h and DevSlp supported.
 
 Seems that word 78 bit 5 is only the sufficient condition, not the
 essential condition. Do you guys have suggestion?

Eventually I received the confirmation from the DevSlp HDD vendor,
bit 5 should be and will be set in production drives with log 30h
page 08h supported. So I will submit a patch to use it instead.


Hi Jeff,

I don't know when I will receive some production drives to verify
my patch, are you okay if I submit my patch first without testing
so as to meet kernel 3.7 bug fix window?

Thanks,
Shane

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: ata4.00: failed to get Identify Device Data, Emask 0x1

2012-10-18 Thread Huang, Shane
> Agree. If NCQ does not imply support of this log page, we should
> definitely refine the check condition used here.
> 
> I suppose Shane will take care of this, but if he doesn't, I'll do that
> at a later time.

I tried word 78 bit 5(Hardware Feature Control) which does not work,
it is 0 on my HDD sample with log 30h page 08h and DevSlp supported.

Seems that word 78 bit 5 is only the sufficient condition, not the
essential condition. Do you guys have suggestion?

Quoting SATA spec:
> Word 78: Serial ATA features supported
> Bit 5 If bit 5 is set to one, then Hardware Feature Control is
> supported (see 13.10). If bit 5 is cleared to zero, then Hardware
> Feature Control is not supported and IDENTIFY DEVICE data
> word 79 bit 5 shall be cleared to zero.
> 
> If Hardware Feature Control is supported, then:
> a) IDENTIFY DEVICE data word 78 bit 5 (see 13.2.1.18) shall be
> set to one;
> b) the SET FEATURES Select Hardware Feature Control subcommand
> shall be supported (see 13.3.8);
> c) page 08h of the Identify Device Data log (see 13.7.7) shall
> be supported;


Thanks,
Shane

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: ata4.00: failed to get Identify Device Data, Emask 0x1

2012-10-18 Thread Huang, Shane
 Agree. If NCQ does not imply support of this log page, we should
 definitely refine the check condition used here.
 
 I suppose Shane will take care of this, but if he doesn't, I'll do that
 at a later time.

I tried word 78 bit 5(Hardware Feature Control) which does not work,
it is 0 on my HDD sample with log 30h page 08h and DevSlp supported.

Seems that word 78 bit 5 is only the sufficient condition, not the
essential condition. Do you guys have suggestion?

Quoting SATA spec:
 Word 78: Serial ATA features supported
 Bit 5 If bit 5 is set to one, then Hardware Feature Control is
 supported (see 13.10). If bit 5 is cleared to zero, then Hardware
 Feature Control is not supported and IDENTIFY DEVICE data
 word 79 bit 5 shall be cleared to zero.
 
 If Hardware Feature Control is supported, then:
 a) IDENTIFY DEVICE data word 78 bit 5 (see 13.2.1.18) shall be
 set to one;
 b) the SET FEATURES Select Hardware Feature Control subcommand
 shall be supported (see 13.3.8);
 c) page 08h of the Identify Device Data log (see 13.7.7) shall
 be supported;


Thanks,
Shane

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [patch] PCI: disable the MSI of AMD RS690

2008-01-25 Thread Shane Huang
Hi Brice:


> > +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS690,
> > quirk_disable_all_msi);
> 
> This patch disable MSI for the _whole_ system, not only behind the
> RS690. Is this on purpose? Is MSI really going to be broken on any
> bus that's _not_ behind RS690. If not, you might want to use 
> quirk_disable_msi() instead (as we do for AMD8131).


quirk_disable_msi() can not fix the issue in my debug, 
quirk_msi_intx_disable_bug() which can fix SB700 SATA MSI bug does not
work either.
quirk_disable_all_msi is the only workaround I found.

If there is any other guy who also has one SB600+RS690 board, and can
help
to  verify this RS690 MSI disablement patch with a new kernel version
such as
2.6.24-rc7,  that's great.


BTW:
RS690 MSI disablement should NOT affect SB700 MSI, because as I know, 
there will not be the combination of RS690+SB700 on the market.


Thanks
Shane


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [patch] PCI: disable the MSI of AMD RS690

2008-01-25 Thread Shane Huang
Hi Brice:


  +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS690,
  quirk_disable_all_msi);
 
 This patch disable MSI for the _whole_ system, not only behind the
 RS690. Is this on purpose? Is MSI really going to be broken on any
 bus that's _not_ behind RS690. If not, you might want to use 
 quirk_disable_msi() instead (as we do for AMD8131).


quirk_disable_msi() can not fix the issue in my debug, 
quirk_msi_intx_disable_bug() which can fix SB700 SATA MSI bug does not
work either.
quirk_disable_all_msi is the only workaround I found.

If there is any other guy who also has one SB600+RS690 board, and can
help
to  verify this RS690 MSI disablement patch with a new kernel version
such as
2.6.24-rc7,  that's great.


BTW:
RS690 MSI disablement should NOT affect SB700 MSI, because as I know, 
there will not be the combination of RS690+SB700 on the market.


Thanks
Shane


--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [PATCH] PCI: modify SB700 SATA MSI quirk

2008-01-24 Thread Shane Huang

 Hi Tejun:


> Okay, here's reformatted in-line version.  Shane, please invest some
> time into setting up email environment.  Sending patches via email is
> an important part of the linux kernel development process and if
> you're gonna submit patches, you're just gonna have to do it.


Right. In fact, I tried to modify some settings before I sent my mail,
but it seems that it does not take effect. I will check it again. Sorry
for that
and thank you for your help~~


Thanks
Shane


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] PCI: modify SB700 SATA MSI quirk

2008-01-24 Thread Shane Huang

SB700 SATA MSI bug will be fixed in SB700 revision A21 at hardware
level,
but the SB700 revision older than A21 will also be found in the market.
This patch modify the original quirk commit
bc38b411fe696fad32b261f492cb4afbf1835256 instead of withdrawing it.
The patch also removes quirk to 0x4395 because 0x4395 is SB800 device
ID.

Signed-off-by: Shane Huang <[EMAIL PROTECTED]>


diff -ruN linux-2.6.24-rc7_org/drivers/pci/quirks.c
linux-2.6.24-rc7_new/drivers/pci/quirks.c
--- linux-2.6.24-rc7_org/drivers/pci/quirks.c   2008-01-23
14:44:53.0 +0800
+++ linux-2.6.24-rc7_new/drivers/pci/quirks.c   2008-01-25
12:55:05.0 +0800
@@ -1709,6 +1709,23 @@
 {
dev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG;
 }
+static void __devinit quirk_msi_intx_disable_ati_bug(struct pci_dev
*dev)
+{
+   struct pci_dev *p;
+
+   /* SB700 MSI issue will be fixed at HW level from revision A21,
+* we need check PCI REVISION ID of SMBus controller to get
SB700
+* revision.
+*/
+   p = pci_get_device(PCI_VENDOR_ID_ATI,
PCI_DEVICE_ID_ATI_SBX00_SMBUS,
+  NULL);
+   if (!p)
+   return;
+
+   if ((p->revision < 0x3B) && (p->revision >= 0x30))
+   dev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG;
+   pci_dev_put(p);
+}
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM,
PCI_DEVICE_ID_TIGON3_5780,
quirk_msi_intx_disable_bug);
@@ -1729,17 +1746,15 @@
quirk_msi_intx_disable_bug);
 
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4390,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4391,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4392,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4393,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4394,
-   quirk_msi_intx_disable_bug);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4395,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4373,
quirk_msi_intx_disable_bug);



Thanks
Shane


modify_SB700_MSI_3.patch
Description: modify_SB700_MSI_3.patch


RE: [patch] PCI: modify SB700 SATA MSI quirk

2008-01-24 Thread Shane Huang
Hi Tejun:


> You need to merge the above two messages into one patch description.
> 
> After S-O-B, you can put --- and between it and the patch 
> body, you can say things which you wanna mention but don't 
> think should be included in commit message.

OK, I'll have to submit another update patch later.




Thanks
Shane


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [patch] PCI: modify SB700 SATA MSI quirk

2008-01-24 Thread Shane Huang
I did some modification to this patch and send it again, Please check
it.
The quirk to 0x4395 has been removed because 0x4395 only belongs to
SB800.


Thanks
Shane


> -Original Message-
> From: Shane Huang 
> 
> SB700 SATA MSI bug will be fixed in SB700 revision A21 at 
> hardware level,
> but the SB700 revision older than A21 will also be found in 
> the market.
> This patch modify the original quirk commit
> bc38b411fe696fad32b261f492cb4afbf1835256 instead of withdrawing it.
> 
> 
> Signed-off-by: Shane Huang <[EMAIL PROTECTED]>


diff -ruN linux-2.6.24-rc7_org/drivers/pci/quirks.c
linux-2.6.24-rc7_new/drivers/pci/quirks.c
--- linux-2.6.24-rc7_org/drivers/pci/quirks.c   2008-01-23
14:44:53.0 +0800
+++ linux-2.6.24-rc7_new/drivers/pci/quirks.c   2008-01-25
10:55:21.0 +0800
@@ -1709,6 +1709,24 @@
 {
dev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG;
 }
+static void __devinit quirk_msi_intx_disable_ati_bug(struct pci_dev
*dev)
+{
+   struct pci_dev *p;
+   u8 rev = 0;
+
+   /* SB700 MSI issue will be fixed at HW level from revision A21,
+* we need check PCI REVISION ID of SMBus controller to get
SB700
+* revision.
+*/
+   p = pci_get_device(PCI_VENDOR_ID_ATI,
PCI_DEVICE_ID_ATI_SBX00_SMBUS,
+  NULL);
+   if (p) {
+   pci_read_config_byte(p, PCI_CLASS_REVISION, );
+   }
+   if ((rev < 0x3B) && (rev >= 0x30)) {
+   dev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG;
+   }
+}
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM,
PCI_DEVICE_ID_TIGON3_5780,
quirk_msi_intx_disable_bug);
@@ -1729,17 +1747,15 @@
quirk_msi_intx_disable_bug);
 
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4390,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4391,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4392,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4393,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4394,
-   quirk_msi_intx_disable_bug);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4395,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4373,
quirk_msi_intx_disable_bug);


modify_SB700_MSI_2.patch
Description: modify_SB700_MSI_2.patch


[patch] PCI: modify SB700 SATA MSI quirk

2008-01-24 Thread Shane Huang
SB700 SATA MSI bug will be fixed in SB700 revision A21 at hardware
level,
but the SB700 revision older than A21 will also be found in the market.
This patch modify the original quirk commit
bc38b411fe696fad32b261f492cb4afbf1835256 instead of withdrawing it.


Signed-off-by: Shane Huang <[EMAIL PROTECTED]>


Since there is some word wrapping problem with my mail client MS
outlook, I also attach the patch as an attachment. Please check it.



diff -ruN old/drivers/pci/quirks.c new/drivers/pci/quirks.c
--- old/drivers/pci/quirks.c2008-01-07 05:45:38.0 +0800
+++ new/drivers/pci/quirks.c2008-01-22 11:31:09.0 +0800
@@ -1709,6 +1709,22 @@
 {
dev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG;
 }
+static void __devinit quirk_msi_intx_disable_ati_bug(struct pci_dev
*dev)
+{
+   struct pci_dev *p;
+   u8 rev = 0;
+
+   /* SB700 MSI issue will be fixed at HW level from revision A21,
+* we need check PCI REVISION ID of SMBus controller to get
SB700 revision.
+*/
+   p = pci_get_device(PCI_VENDOR_ID_ATI,
PCI_DEVICE_ID_ATI_SBX00_SMBUS, NULL);
+   if (p!=NULL) {
+   pci_read_config_byte(p, PCI_CLASS_REVISION, );
+   }
+   if ((rev < 0x3B) && (rev >= 0x30)) {
+   dev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG;
+   }
+}
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM,
PCI_DEVICE_ID_TIGON3_5780,
quirk_msi_intx_disable_bug);
@@ -1729,17 +1745,17 @@
quirk_msi_intx_disable_bug);
 
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4390,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4391,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4392,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4393,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4394,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4395,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4373,
quirk_msi_intx_disable_bug);


Thanks
Best Regards
Shane



modify_SB700_MSI_issue.patch
Description: modify_SB700_MSI_issue.patch


[patch] PCI: disable the MSI of AMD RS690

2008-01-24 Thread Shane Huang
This patch recover Tejun's commit
4be8f906435a6af241821ab5b94b2b12cb7d57d8
 because there is one MSI bug on RS690+SB600 board which will lead to
boot failure. This bug is NOT same as the one in SB700 SATA controller,
quirk_msi_intx_disable_bug does not work to SB600. Disablement the MSI
of RS690 is the workaround.

Signed-off-by: Shane Huang <[EMAIL PROTECTED]>


Since there is some word wrapping problem with my mail client MS outlook
if I copy the patch into the text, so I'll also attach the patch as an
attachment. Please check it.


diff -ruN old/drivers/pci/quirks.c new/drivers/pci/quirks.c
--- old/drivers/pci/quirks.c2008-01-07 05:45:38.0 +0800
+++ new/drivers/pci/quirks.c2008-01-22 11:02:00.0 +0800
@@ -1623,6 +1623,7 @@
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS,
PCI_DEVICE_ID_SERVERWORKS_GCNB_LE, quirk_disable_all_msi);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS400_200,
quirk_disable_all_msi);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS480,
quirk_disable_all_msi);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS690,
quirk_disable_all_msi);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3351,
quirk_disable_all_msi);
 
 /* Disable MSI on chipsets that are known to not support it */
diff -ruN old/include/linux/pci_ids.h new/include/linux/pci_ids.h
--- old/include/linux/pci_ids.h 2008-01-07 05:45:38.0 +0800
+++ new/include/linux/pci_ids.h 2008-01-22 11:01:55.0 +0800
@@ -360,6 +360,7 @@
 #define PCI_DEVICE_ID_ATI_RS400_166 0x5a32
 #define PCI_DEVICE_ID_ATI_RS400_200 0x5a33
 #define PCI_DEVICE_ID_ATI_RS480 0x5950
+#define PCI_DEVICE_ID_ATI_RS690 0x7910
 /* ATI IXP Chipset */
 #define PCI_DEVICE_ID_ATI_IXP200_IDE   0x4349
 #define PCI_DEVICE_ID_ATI_IXP200_SMBUS 0x4353



Thanks
Best Regards
Shane



disable_RS690_MSI.patch
Description: disable_RS690_MSI.patch


[patch] PCI: disable the MSI of AMD RS690

2008-01-24 Thread Shane Huang
This patch recover Tejun's commit
4be8f906435a6af241821ab5b94b2b12cb7d57d8
 because there is one MSI bug on RS690+SB600 board which will lead to
boot failure. This bug is NOT same as the one in SB700 SATA controller,
quirk_msi_intx_disable_bug does not work to SB600. Disablement the MSI
of RS690 is the workaround.

Signed-off-by: Shane Huang [EMAIL PROTECTED]


Since there is some word wrapping problem with my mail client MS outlook
if I copy the patch into the text, so I'll also attach the patch as an
attachment. Please check it.


diff -ruN old/drivers/pci/quirks.c new/drivers/pci/quirks.c
--- old/drivers/pci/quirks.c2008-01-07 05:45:38.0 +0800
+++ new/drivers/pci/quirks.c2008-01-22 11:02:00.0 +0800
@@ -1623,6 +1623,7 @@
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS,
PCI_DEVICE_ID_SERVERWORKS_GCNB_LE, quirk_disable_all_msi);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS400_200,
quirk_disable_all_msi);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS480,
quirk_disable_all_msi);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS690,
quirk_disable_all_msi);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3351,
quirk_disable_all_msi);
 
 /* Disable MSI on chipsets that are known to not support it */
diff -ruN old/include/linux/pci_ids.h new/include/linux/pci_ids.h
--- old/include/linux/pci_ids.h 2008-01-07 05:45:38.0 +0800
+++ new/include/linux/pci_ids.h 2008-01-22 11:01:55.0 +0800
@@ -360,6 +360,7 @@
 #define PCI_DEVICE_ID_ATI_RS400_166 0x5a32
 #define PCI_DEVICE_ID_ATI_RS400_200 0x5a33
 #define PCI_DEVICE_ID_ATI_RS480 0x5950
+#define PCI_DEVICE_ID_ATI_RS690 0x7910
 /* ATI IXP Chipset */
 #define PCI_DEVICE_ID_ATI_IXP200_IDE   0x4349
 #define PCI_DEVICE_ID_ATI_IXP200_SMBUS 0x4353



Thanks
Best Regards
Shane



disable_RS690_MSI.patch
Description: disable_RS690_MSI.patch


[patch] PCI: modify SB700 SATA MSI quirk

2008-01-24 Thread Shane Huang
SB700 SATA MSI bug will be fixed in SB700 revision A21 at hardware
level,
but the SB700 revision older than A21 will also be found in the market.
This patch modify the original quirk commit
bc38b411fe696fad32b261f492cb4afbf1835256 instead of withdrawing it.


Signed-off-by: Shane Huang [EMAIL PROTECTED]


Since there is some word wrapping problem with my mail client MS
outlook, I also attach the patch as an attachment. Please check it.



diff -ruN old/drivers/pci/quirks.c new/drivers/pci/quirks.c
--- old/drivers/pci/quirks.c2008-01-07 05:45:38.0 +0800
+++ new/drivers/pci/quirks.c2008-01-22 11:31:09.0 +0800
@@ -1709,6 +1709,22 @@
 {
dev-dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG;
 }
+static void __devinit quirk_msi_intx_disable_ati_bug(struct pci_dev
*dev)
+{
+   struct pci_dev *p;
+   u8 rev = 0;
+
+   /* SB700 MSI issue will be fixed at HW level from revision A21,
+* we need check PCI REVISION ID of SMBus controller to get
SB700 revision.
+*/
+   p = pci_get_device(PCI_VENDOR_ID_ATI,
PCI_DEVICE_ID_ATI_SBX00_SMBUS, NULL);
+   if (p!=NULL) {
+   pci_read_config_byte(p, PCI_CLASS_REVISION, rev);
+   }
+   if ((rev  0x3B)  (rev = 0x30)) {
+   dev-dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG;
+   }
+}
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM,
PCI_DEVICE_ID_TIGON3_5780,
quirk_msi_intx_disable_bug);
@@ -1729,17 +1745,17 @@
quirk_msi_intx_disable_bug);
 
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4390,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4391,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4392,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4393,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4394,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4395,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4373,
quirk_msi_intx_disable_bug);


Thanks
Best Regards
Shane



modify_SB700_MSI_issue.patch
Description: modify_SB700_MSI_issue.patch


RE: [patch] PCI: modify SB700 SATA MSI quirk

2008-01-24 Thread Shane Huang
I did some modification to this patch and send it again, Please check
it.
The quirk to 0x4395 has been removed because 0x4395 only belongs to
SB800.


Thanks
Shane


 -Original Message-
 From: Shane Huang 
 
 SB700 SATA MSI bug will be fixed in SB700 revision A21 at 
 hardware level,
 but the SB700 revision older than A21 will also be found in 
 the market.
 This patch modify the original quirk commit
 bc38b411fe696fad32b261f492cb4afbf1835256 instead of withdrawing it.
 
 
 Signed-off-by: Shane Huang [EMAIL PROTECTED]


diff -ruN linux-2.6.24-rc7_org/drivers/pci/quirks.c
linux-2.6.24-rc7_new/drivers/pci/quirks.c
--- linux-2.6.24-rc7_org/drivers/pci/quirks.c   2008-01-23
14:44:53.0 +0800
+++ linux-2.6.24-rc7_new/drivers/pci/quirks.c   2008-01-25
10:55:21.0 +0800
@@ -1709,6 +1709,24 @@
 {
dev-dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG;
 }
+static void __devinit quirk_msi_intx_disable_ati_bug(struct pci_dev
*dev)
+{
+   struct pci_dev *p;
+   u8 rev = 0;
+
+   /* SB700 MSI issue will be fixed at HW level from revision A21,
+* we need check PCI REVISION ID of SMBus controller to get
SB700
+* revision.
+*/
+   p = pci_get_device(PCI_VENDOR_ID_ATI,
PCI_DEVICE_ID_ATI_SBX00_SMBUS,
+  NULL);
+   if (p) {
+   pci_read_config_byte(p, PCI_CLASS_REVISION, rev);
+   }
+   if ((rev  0x3B)  (rev = 0x30)) {
+   dev-dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG;
+   }
+}
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM,
PCI_DEVICE_ID_TIGON3_5780,
quirk_msi_intx_disable_bug);
@@ -1729,17 +1747,15 @@
quirk_msi_intx_disable_bug);
 
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4390,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4391,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4392,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4393,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4394,
-   quirk_msi_intx_disable_bug);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4395,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4373,
quirk_msi_intx_disable_bug);


modify_SB700_MSI_2.patch
Description: modify_SB700_MSI_2.patch


RE: [patch] PCI: modify SB700 SATA MSI quirk

2008-01-24 Thread Shane Huang
Hi Tejun:


 You need to merge the above two messages into one patch description.
 
 After S-O-B, you can put --- and between it and the patch 
 body, you can say things which you wanna mention but don't 
 think should be included in commit message.

OK, I'll have to submit another update patch later.




Thanks
Shane


--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] PCI: modify SB700 SATA MSI quirk

2008-01-24 Thread Shane Huang

SB700 SATA MSI bug will be fixed in SB700 revision A21 at hardware
level,
but the SB700 revision older than A21 will also be found in the market.
This patch modify the original quirk commit
bc38b411fe696fad32b261f492cb4afbf1835256 instead of withdrawing it.
The patch also removes quirk to 0x4395 because 0x4395 is SB800 device
ID.

Signed-off-by: Shane Huang [EMAIL PROTECTED]


diff -ruN linux-2.6.24-rc7_org/drivers/pci/quirks.c
linux-2.6.24-rc7_new/drivers/pci/quirks.c
--- linux-2.6.24-rc7_org/drivers/pci/quirks.c   2008-01-23
14:44:53.0 +0800
+++ linux-2.6.24-rc7_new/drivers/pci/quirks.c   2008-01-25
12:55:05.0 +0800
@@ -1709,6 +1709,23 @@
 {
dev-dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG;
 }
+static void __devinit quirk_msi_intx_disable_ati_bug(struct pci_dev
*dev)
+{
+   struct pci_dev *p;
+
+   /* SB700 MSI issue will be fixed at HW level from revision A21,
+* we need check PCI REVISION ID of SMBus controller to get
SB700
+* revision.
+*/
+   p = pci_get_device(PCI_VENDOR_ID_ATI,
PCI_DEVICE_ID_ATI_SBX00_SMBUS,
+  NULL);
+   if (!p)
+   return;
+
+   if ((p-revision  0x3B)  (p-revision = 0x30))
+   dev-dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG;
+   pci_dev_put(p);
+}
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM,
PCI_DEVICE_ID_TIGON3_5780,
quirk_msi_intx_disable_bug);
@@ -1729,17 +1746,15 @@
quirk_msi_intx_disable_bug);
 
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4390,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4391,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4392,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4393,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4394,
-   quirk_msi_intx_disable_bug);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4395,
-   quirk_msi_intx_disable_bug);
+   quirk_msi_intx_disable_ati_bug);
 
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4373,
quirk_msi_intx_disable_bug);



Thanks
Shane


modify_SB700_MSI_3.patch
Description: modify_SB700_MSI_3.patch


RE: [PATCH] PCI: modify SB700 SATA MSI quirk

2008-01-24 Thread Shane Huang

 Hi Tejun:


 Okay, here's reformatted in-line version.  Shane, please invest some
 time into setting up email environment.  Sending patches via email is
 an important part of the linux kernel development process and if
 you're gonna submit patches, you're just gonna have to do it.


Right. In fact, I tried to modify some settings before I sent my mail,
but it seems that it does not take effect. I will check it again. Sorry
for that
and thank you for your help~~


Thanks
Shane


--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [2.6 patch] videobuf-core.c locking fixes

2007-12-12 Thread Shane
> Yes it does! I was just going to send the same patch myself :)

But, I am now seeing some errors that weren't there in 2.6.23

kernel: bttv0: SCERR @ 1fa0401c,bits: HSYNC OFLOW SCERR*
last message repeated 15 times
kernel: bttv0: timeout: drop=16 irq=105615/105615, risc=1fa0401c,
bits: HSYNC OFLOW
kernel: bttv0: reset, reinitialize
kernel: bttv0: PLL can sleep, using XTAL (28636363).

kernel: bttv0: SCERR @ 1fa0401c,bits: HSYNC OFLOW SCERR*
last message repeated 15 times
kernel: bttv0: timeout: drop=16 irq=106741/106741, risc=1fa0401c,
bits: HSYNC OFLOW
kernel: bttv0: reset, reinitialize
kernel: bttv0: PLL can sleep, using XTAL (28636363).

These happen occasionally and it causes an EIO DQBUF
error and the application has to re queue the buffers but it
recovers OK. Not sure if it causes some sort of internal
kernel corruption that will only be noticed later possibly?

I am using 15 userptr buffers so whatever is happening may
be happening once per buffer sometimes. dunno

Shane
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [2.6 patch] videobuf-core.c locking fixes

2007-12-12 Thread Shane
On Dec 12, 2007 2:44 PM, Adrian Bunk <[EMAIL PROTECTED]> wrote:
> On Wed, Dec 12, 2007 at 01:57:27PM -0500, Shane wrote:
> > On Dec 12, 2007 11:37 AM, Shane <[EMAIL PROTECTED]> wrote:
> > > On Dec 12, 2007 9:21 AM, Mauro Carvalho Chehab <[EMAIL PROTECTED]> wrote:
> > > ...
> > > > The proper solution is provided by this changeset:
> > > > http://git.kernel.org/?p=linux/kernel/git/mchehab/v4l-dvb.git;a=commitdiff;h=19fb1457990b6b7e15586ec7331541a184233acc
> > >
> > > I applied this and it seems fine with a bttv card.
> >
> > Ugh, after further testing with a bttv card it seems this is not fine.
> >
> > vbi doesn't work anymore and my application gets stuck in a Zombie,
> > unkillable, have to reboot state :(
> >
> > mythtv3683 1  -3  2.4  0.0  0 0 ?Z > 00:00:06 [mythbackend] 
> >
> > Reverting Mauro's patch above does fix the problem.
>
> Thanks for testing, does the patch below fix it?
>
> > Shane
>
> cu
> Adrian
>
>
> <--  snip  -->
>
>
> After commit 19fb1457990b6b7e15586ec7331541a184233acc the callers in
> videobuf-core.c that already hold the lock must call
> __videobuf_read_start() instead of videobuf_read_start().
>
> Signed-off-by: Adrian Bunk <[EMAIL PROTECTED]>
>
> ---
>
>  drivers/media/video/videobuf-core.c |4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> e1f8b4a49d86746f699919531c17fd154787e308
> diff --git a/drivers/media/video/videobuf-core.c 
> b/drivers/media/video/videobuf-core.c
> index 81f77d2..c8a5cb5 100644
> --- a/drivers/media/video/videobuf-core.c
> +++ b/drivers/media/video/videobuf-core.c
> @@ -909,7 +909,7 @@ ssize_t videobuf_read_stream(struct videobuf_queue *q,
> if (q->streaming)
> goto done;
> if (!q->reading) {
> -   retval = videobuf_read_start(q);
> +   retval = __videobuf_read_start(q);
> if (retval < 0)
> goto done;
> }
> @@ -982,7 +982,7 @@ unsigned int videobuf_poll_stream(struct file *file,
>  struct videobuf_buffer, stream);
> } else {
> if (!q->reading)
> -   videobuf_read_start(q);
> +   __videobuf_read_start(q);
> if (!q->reading) {
> rc = POLLERR;
> } else if (NULL == q->read_buf) {
>

Yes it does! I was just going to send the same patch myself :)

Shane
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24-rc5 "videobuf_read_start" [drivers/media/video/videobuf-dvb.ko] undefined!

2007-12-12 Thread Shane
On Dec 12, 2007 11:37 AM, Shane <[EMAIL PROTECTED]> wrote:
> On Dec 12, 2007 9:21 AM, Mauro Carvalho Chehab <[EMAIL PROTECTED]> wrote:
> ...
> > The proper solution is provided by this changeset:
> > http://git.kernel.org/?p=linux/kernel/git/mchehab/v4l-dvb.git;a=commitdiff;h=19fb1457990b6b7e15586ec7331541a184233acc
>
> I applied this and it seems fine with a bttv card.

Ugh, after further testing with a bttv card it seems this is not fine.

vbi doesn't work anymore and my application gets stuck in a Zombie,
unkillable, have to reboot state :(

mythtv3683 1  -3  2.4  0.0  0 0 ?Z

Reverting Mauro's patch above does fix the problem.

Shane
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24-rc5 "videobuf_read_start" [drivers/media/video/videobuf-dvb.ko] undefined!

2007-12-12 Thread Shane
On Dec 12, 2007 9:21 AM, Mauro Carvalho Chehab <[EMAIL PROTECTED]> wrote:
...
> The proper solution is provided by this changeset:
> http://git.kernel.org/?p=linux/kernel/git/mchehab/v4l-dvb.git;a=commitdiff;h=19fb1457990b6b7e15586ec7331541a184233acc

I applied this and it seems fine with a bttv card.

Mauro and Adrian,

Thanks for your prompt attention to this and for promptly pushing the
fix to Linus.

Regards,

Shane
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24-rc5 videobuf_read_start [drivers/media/video/videobuf-dvb.ko] undefined!

2007-12-12 Thread Shane
On Dec 12, 2007 9:21 AM, Mauro Carvalho Chehab [EMAIL PROTECTED] wrote:
...
 The proper solution is provided by this changeset:
 http://git.kernel.org/?p=linux/kernel/git/mchehab/v4l-dvb.git;a=commitdiff;h=19fb1457990b6b7e15586ec7331541a184233acc

I applied this and it seems fine with a bttv card.

Mauro and Adrian,

Thanks for your prompt attention to this and for promptly pushing the
fix to Linus.

Regards,

Shane
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24-rc5 videobuf_read_start [drivers/media/video/videobuf-dvb.ko] undefined!

2007-12-12 Thread Shane
On Dec 12, 2007 11:37 AM, Shane [EMAIL PROTECTED] wrote:
 On Dec 12, 2007 9:21 AM, Mauro Carvalho Chehab [EMAIL PROTECTED] wrote:
 ...
  The proper solution is provided by this changeset:
  http://git.kernel.org/?p=linux/kernel/git/mchehab/v4l-dvb.git;a=commitdiff;h=19fb1457990b6b7e15586ec7331541a184233acc

 I applied this and it seems fine with a bttv card.

Ugh, after further testing with a bttv card it seems this is not fine.

vbi doesn't work anymore and my application gets stuck in a Zombie,
unkillable, have to reboot state :(

mythtv3683 1  -3  2.4  0.0  0 0 ?Zl  13:40:35
00:00:06 [mythbackend] defunct

Reverting Mauro's patch above does fix the problem.

Shane
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [2.6 patch] videobuf-core.c locking fixes

2007-12-12 Thread Shane
On Dec 12, 2007 2:44 PM, Adrian Bunk [EMAIL PROTECTED] wrote:
 On Wed, Dec 12, 2007 at 01:57:27PM -0500, Shane wrote:
  On Dec 12, 2007 11:37 AM, Shane [EMAIL PROTECTED] wrote:
   On Dec 12, 2007 9:21 AM, Mauro Carvalho Chehab [EMAIL PROTECTED] wrote:
   ...
The proper solution is provided by this changeset:
http://git.kernel.org/?p=linux/kernel/git/mchehab/v4l-dvb.git;a=commitdiff;h=19fb1457990b6b7e15586ec7331541a184233acc
  
   I applied this and it seems fine with a bttv card.
 
  Ugh, after further testing with a bttv card it seems this is not fine.
 
  vbi doesn't work anymore and my application gets stuck in a Zombie,
  unkillable, have to reboot state :(
 
  mythtv3683 1  -3  2.4  0.0  0 0 ?Zl  13:40:35
  00:00:06 [mythbackend] defunct
 
  Reverting Mauro's patch above does fix the problem.

 Thanks for testing, does the patch below fix it?

  Shane

 cu
 Adrian


 --  snip  --


 After commit 19fb1457990b6b7e15586ec7331541a184233acc the callers in
 videobuf-core.c that already hold the lock must call
 __videobuf_read_start() instead of videobuf_read_start().

 Signed-off-by: Adrian Bunk [EMAIL PROTECTED]

 ---

  drivers/media/video/videobuf-core.c |4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

 e1f8b4a49d86746f699919531c17fd154787e308
 diff --git a/drivers/media/video/videobuf-core.c 
 b/drivers/media/video/videobuf-core.c
 index 81f77d2..c8a5cb5 100644
 --- a/drivers/media/video/videobuf-core.c
 +++ b/drivers/media/video/videobuf-core.c
 @@ -909,7 +909,7 @@ ssize_t videobuf_read_stream(struct videobuf_queue *q,
 if (q-streaming)
 goto done;
 if (!q-reading) {
 -   retval = videobuf_read_start(q);
 +   retval = __videobuf_read_start(q);
 if (retval  0)
 goto done;
 }
 @@ -982,7 +982,7 @@ unsigned int videobuf_poll_stream(struct file *file,
  struct videobuf_buffer, stream);
 } else {
 if (!q-reading)
 -   videobuf_read_start(q);
 +   __videobuf_read_start(q);
 if (!q-reading) {
 rc = POLLERR;
 } else if (NULL == q-read_buf) {


Yes it does! I was just going to send the same patch myself :)

Shane
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [2.6 patch] videobuf-core.c locking fixes

2007-12-12 Thread Shane
 Yes it does! I was just going to send the same patch myself :)

But, I am now seeing some errors that weren't there in 2.6.23

kernel: bttv0: SCERR @ 1fa0401c,bits: HSYNC OFLOW SCERR*
last message repeated 15 times
kernel: bttv0: timeout: drop=16 irq=105615/105615, risc=1fa0401c,
bits: HSYNC OFLOW
kernel: bttv0: reset, reinitialize
kernel: bttv0: PLL can sleep, using XTAL (28636363).

kernel: bttv0: SCERR @ 1fa0401c,bits: HSYNC OFLOW SCERR*
last message repeated 15 times
kernel: bttv0: timeout: drop=16 irq=106741/106741, risc=1fa0401c,
bits: HSYNC OFLOW
kernel: bttv0: reset, reinitialize
kernel: bttv0: PLL can sleep, using XTAL (28636363).

These happen occasionally and it causes an EIO DQBUF
error and the application has to re queue the buffers but it
recovers OK. Not sure if it causes some sort of internal
kernel corruption that will only be noticed later possibly?

I am using 15 userptr buffers so whatever is happening may
be happening once per buffer sometimes. dunno

Shane
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


2.6.24-rc5 "videobuf_read_start" [drivers/media/video/videobuf-dvb.ko] undefined!

2007-12-11 Thread Shane
In 2.6.24-rc5+, I hit this problem with videobuf_read_start
not being exported. Patch attached, only compile tested.

  CHK include/linux/version.h
  CHK include/linux/utsrelease.h
  CALLscripts/checksyscalls.sh
  CHK include/linux/compile.h
  CC [M]  drivers/media/video/videobuf-core.o
  Building modules, stage 2.
Kernel: arch/x86/boot/bzImage is ready  (#1)
  MODPOST 202 modules
ERROR: "videobuf_read_start" [drivers/media/video/videobuf-dvb.ko] undefined!
make[1]: *** [__modpost] Error 1
make: *** [modules] Error 2

Shane
diff --git a/drivers/media/video/videobuf-core.c 
b/drivers/media/video/videobuf-core.c
index de2f56b..44fa76b 100644
--- a/drivers/media/video/videobuf-core.c
+++ b/drivers/media/video/videobuf-core.c
@@ -1058,6 +1058,7 @@ EXPORT_SYMBOL_GPL(videobuf_dqbuf);
 EXPORT_SYMBOL_GPL(videobuf_streamon);
 EXPORT_SYMBOL_GPL(videobuf_streamoff);
 
+EXPORT_SYMBOL_GPL(videobuf_read_start);
 EXPORT_SYMBOL_GPL(videobuf_read_stop);
 EXPORT_SYMBOL_GPL(videobuf_stop);
 EXPORT_SYMBOL_GPL(videobuf_read_stream);


2.6.24-rc5 videobuf_read_start [drivers/media/video/videobuf-dvb.ko] undefined!

2007-12-11 Thread Shane
In 2.6.24-rc5+, I hit this problem with videobuf_read_start
not being exported. Patch attached, only compile tested.

  CHK include/linux/version.h
  CHK include/linux/utsrelease.h
  CALLscripts/checksyscalls.sh
  CHK include/linux/compile.h
  CC [M]  drivers/media/video/videobuf-core.o
  Building modules, stage 2.
Kernel: arch/x86/boot/bzImage is ready  (#1)
  MODPOST 202 modules
ERROR: videobuf_read_start [drivers/media/video/videobuf-dvb.ko] undefined!
make[1]: *** [__modpost] Error 1
make: *** [modules] Error 2

Shane
diff --git a/drivers/media/video/videobuf-core.c 
b/drivers/media/video/videobuf-core.c
index de2f56b..44fa76b 100644
--- a/drivers/media/video/videobuf-core.c
+++ b/drivers/media/video/videobuf-core.c
@@ -1058,6 +1058,7 @@ EXPORT_SYMBOL_GPL(videobuf_dqbuf);
 EXPORT_SYMBOL_GPL(videobuf_streamon);
 EXPORT_SYMBOL_GPL(videobuf_streamoff);
 
+EXPORT_SYMBOL_GPL(videobuf_read_start);
 EXPORT_SYMBOL_GPL(videobuf_read_stop);
 EXPORT_SYMBOL_GPL(videobuf_stop);
 EXPORT_SYMBOL_GPL(videobuf_read_stream);


Re: 2.6.24-rc3-git4 NFS crossmnt regression

2007-12-10 Thread Shane
On Dec 10, 2007 9:19 AM, Maxim Levitsky <[EMAIL PROTECTED]> wrote:
> ...
> > It is best not to use nohide - we should probably mark it as
> > 'legacy'.
> >
> > Simply export the top level mountpoint as 'crossmnt'  and everything
> > below there will be exported.
> >
> > > Where should I put those options in root file-system export or in 
> > > submount export?
> >
> > crossmnt goes at the top.  nohide goes in the submount.  Both have
> > the same general effect though with subtle differences.
> > You don't need both (though that doesn't hurt).
> > Just use crossmnt at the top,  Then you don't need to mention the
> > lower level filesystems at all.
> >
> > >
> ...
> > > (I decided to switch to NFS4 only due to the lack of ability to see 
> > > underlying mounts)
> > >
> >
> > All of this should work fine with v3.  Once you have the right patch
> > for the crossmnt bug applied, if you have further problems post them
> > to [EMAIL PROTECTED]
> >
> > NeilBrown
> >
>
> Big thanks,
>
> Still NFS server just don't want to accept the connection
> I noticed that if I first mount with
> -tnfs, unmount,  and then mount with -tnfs4, it works
>
>
> Assuming that
> [PATCH 2.6.24-rc4] proc: Remove/Fix proc generic d_revalidate
> is the fix for crossmnt bug, I applied it to both client and server,
> but no luck.

I'm using NFSv3, but I applied two patches. The one you mention
from Eric and the patch Trond posted in this thread.

>
> Still see empty folders.

That was the symptom I had without Trond's patch.

Shane
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24-rc3-git4 NFS crossmnt regression

2007-12-10 Thread Shane
On Dec 10, 2007 9:19 AM, Maxim Levitsky [EMAIL PROTECTED] wrote:
 ...
  It is best not to use nohide - we should probably mark it as
  'legacy'.
 
  Simply export the top level mountpoint as 'crossmnt'  and everything
  below there will be exported.
 
   Where should I put those options in root file-system export or in 
   submount export?
 
  crossmnt goes at the top.  nohide goes in the submount.  Both have
  the same general effect though with subtle differences.
  You don't need both (though that doesn't hurt).
  Just use crossmnt at the top,  Then you don't need to mention the
  lower level filesystems at all.
 
  
 ...
   (I decided to switch to NFS4 only due to the lack of ability to see 
   underlying mounts)
  
 
  All of this should work fine with v3.  Once you have the right patch
  for the crossmnt bug applied, if you have further problems post them
  to [EMAIL PROTECTED]
 
  NeilBrown
 

 Big thanks,

 Still NFS server just don't want to accept the connection
 I noticed that if I first mount with
 -tnfs, unmount,  and then mount with -tnfs4, it works


 Assuming that
 [PATCH 2.6.24-rc4] proc: Remove/Fix proc generic d_revalidate
 is the fix for crossmnt bug, I applied it to both client and server,
 but no luck.

I'm using NFSv3, but I applied two patches. The one you mention
from Eric and the patch Trond posted in this thread.


 Still see empty folders.

That was the symptom I had without Trond's patch.

Shane
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 2.6.24-rc4] proc: Remove/Fix proc generic d_revalidate

2007-12-08 Thread Shane
On Dec 7, 2007 11:25 PM, Eric W. Biederman <[EMAIL PROTECTED]> wrote:
>
> Ultimately to implement /proc perfectly we need an implementation
> of d_revalidate because files and directories can be removed behind
> the back of the VFS, and d_revalidate is the only way we can let
> the VFS know that this has happened.
>
> Unfortunately the linux VFS can not cope with anything in the path
> to a mount point going away.  So a proper d_revalidate method that
> calls d_drop also needs to call have_submounts which is moderately
> expensive, so you really don't want a d_revalidate method that
> unconditionally calls it, but instead only calls it when the
> backing object has really gone away.
>
> proc generic entries only disappear on module_unload (when
> not counting the fledgling network namespace) so it is quite rare
> that we actually encounter that case and has not actually caused
> us real world trouble yet.
>
> So until we get a proper test for keeping dentries in the dcache
> fix the current d_revalidate method by completely removing it.  This
> returns us to the current status quo.
>
> So with CONFIG_NETNS=n things should look as they have always looked.
>
> For CONFIG_NETNS=y things work most of the time but there are a few
> rare corner cases that don't behave properly.  As the network namespace
> is barely present in 2.6.24 this should not be a problem.
>
> Signed-off-by: Eric W. Biederman <[EMAIL PROTECTED]>
> ---
>  fs/proc/generic.c |7 ---
>  1 files changed, 0 insertions(+), 7 deletions(-)
>
> diff --git a/fs/proc/generic.c b/fs/proc/generic.c
> index 8d49838..6a2fe51 100644
> --- a/fs/proc/generic.c
> +++ b/fs/proc/generic.c
> @@ -374,16 +374,9 @@ static int proc_delete_dentry(struct dentry * dentry)
> return 1;
>  }
>
> -static int proc_revalidate_dentry(struct dentry *dentry, struct nameidata 
> *nd)
> -{
> -   d_drop(dentry);
> -   return 0;
> -}
> -
>  static struct dentry_operations proc_dentry_operations =
>  {
> .d_delete   = proc_delete_dentry,
> -   .d_revalidate   = proc_revalidate_dentry,
>  };
>
>  /*
> --
> 1.5.3.rc6.17.g1911

Confirmed. This patch fixes the problem for me.

Shane
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 2.6.24-rc4] proc: Remove/Fix proc generic d_revalidate

2007-12-08 Thread Shane
On Dec 7, 2007 11:25 PM, Eric W. Biederman [EMAIL PROTECTED] wrote:

 Ultimately to implement /proc perfectly we need an implementation
 of d_revalidate because files and directories can be removed behind
 the back of the VFS, and d_revalidate is the only way we can let
 the VFS know that this has happened.

 Unfortunately the linux VFS can not cope with anything in the path
 to a mount point going away.  So a proper d_revalidate method that
 calls d_drop also needs to call have_submounts which is moderately
 expensive, so you really don't want a d_revalidate method that
 unconditionally calls it, but instead only calls it when the
 backing object has really gone away.

 proc generic entries only disappear on module_unload (when
 not counting the fledgling network namespace) so it is quite rare
 that we actually encounter that case and has not actually caused
 us real world trouble yet.

 So until we get a proper test for keeping dentries in the dcache
 fix the current d_revalidate method by completely removing it.  This
 returns us to the current status quo.

 So with CONFIG_NETNS=n things should look as they have always looked.

 For CONFIG_NETNS=y things work most of the time but there are a few
 rare corner cases that don't behave properly.  As the network namespace
 is barely present in 2.6.24 this should not be a problem.

 Signed-off-by: Eric W. Biederman [EMAIL PROTECTED]
 ---
  fs/proc/generic.c |7 ---
  1 files changed, 0 insertions(+), 7 deletions(-)

 diff --git a/fs/proc/generic.c b/fs/proc/generic.c
 index 8d49838..6a2fe51 100644
 --- a/fs/proc/generic.c
 +++ b/fs/proc/generic.c
 @@ -374,16 +374,9 @@ static int proc_delete_dentry(struct dentry * dentry)
 return 1;
  }

 -static int proc_revalidate_dentry(struct dentry *dentry, struct nameidata 
 *nd)
 -{
 -   d_drop(dentry);
 -   return 0;
 -}
 -
  static struct dentry_operations proc_dentry_operations =
  {
 .d_delete   = proc_delete_dentry,
 -   .d_revalidate   = proc_revalidate_dentry,
  };

  /*
 --
 1.5.3.rc6.17.g1911

Confirmed. This patch fixes the problem for me.

Shane
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24-rc3-git4 NFS crossmnt regression

2007-12-07 Thread Shane
On Dec 7, 2007 7:15 PM, Andrew Morton <[EMAIL PROTECTED]> wrote:
>
> On Sat, 8 Dec 2007 03:00:43 +0300
> Alexey Dobriyan <[EMAIL PROTECTED]> wrote:
>
> > On Sat, Dec 08, 2007 at 12:43:28AM +0100, Rafael J. Wysocki wrote:
> > > On Saturday, 8 of December 2007, Andrew Morton wrote:
> > > > On Fri, 07 Dec 2007 17:51:58 -0500
> > > > Trond Myklebust <[EMAIL PROTECTED]> wrote:
> > > >
> > > > >
> > > > > On Fri, 2007-12-07 at 14:39 -0500, Shane wrote:
> > > > > > On Dec 7, 2007 2:16 PM, Shane <[EMAIL PROTECTED]> wrote:
> > > > > > ...
> > > > > > > Confirmed working in rc4-git5.  I'll deploy this kernel in a few 
> > > > > > > more
> > > > > > > spots and check for other regressions.
> > > > > >
> > > > > > Hmm, I installed a new kernel built from the same sources on the NFS
> > > > > > server. And now I don't see anything at all in the crossmnt dirs.
> > > > > >
> > > > > > ls /dirA/dirB/dirC  --> zero output (empty dir)
> > > > > >
> > > > > > Are there any other pending fixes?
> > > > > >
> > > > > > Shane
> > > > >
> > > > > You've probably fallen afoul of
> > > > >
> > > > >http://bugzilla.kernel.org/show_bug.cgi?id=9504
> > > > >
> > > >
> > > > Yeah.
> > > >
> > > > I have a tentative fix below but I can't seem to get Eric and Denis to 
> > > > get
> > > > a suitable fix nailed down.  It's urgent!
> > >
> > > Well, how about asking Linus to revert commit
> > > 2b1e300a9dfc3196ccddf6f1d74b91b7af55e416 altogether and starting over 
> > > again?
> > >
> > > It apparently causes more trouble than the issue it was supposed to fix.
> >
> > I very much agree. ->shadow_proc is so ugly, so it's not funny anymore.
> > Adding such hook for proc part of networking _and_ for modules is just 
> > asking
> > for trouble as was demonstrated.
>
> OK, perhaps a revert is the best thing to do here.  I don't think anyone
> will be expecting fully finalised and robust netns support in 2.6.24.

I reverted 2b1e300a9dfc3196ccddf6f1d74b91b7af55e416 and it does fix the NFS
server problem with crossmnt's for me.

Shane
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24-rc3-git4 NFS crossmnt regression

2007-12-07 Thread Shane
On Dec 7, 2007 2:16 PM, Shane <[EMAIL PROTECTED]> wrote:
...
> Confirmed working in rc4-git5.  I'll deploy this kernel in a few more
> spots and check for other regressions.

Hmm, I installed a new kernel built from the same sources on the NFS
server. And now I don't see anything at all in the crossmnt dirs.

ls /dirA/dirB/dirC  --> zero output (empty dir)

Are there any other pending fixes?

Shane
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24-rc3-git4 NFS crossmnt regression

2007-12-07 Thread Shane
On Dec 7, 2007 1:55 PM, Shane <[EMAIL PROTECTED]> wrote:
> On Dec 7, 2007 1:46 PM, Trond Myklebust <[EMAIL PROTECTED]> wrote:
> ...
> > This problem has already been reported. The fix (which I'm planning on
> > sending to Linus soon) is appended.
>
> Thanks Trond. Sorry for the duplicate report, I did actually do some
> searching...
>
> I will confirm the fix.

Confirmed working in rc4-git5.  I'll deploy this kernel in a few more
spots and check for other regressions.

Thanks again,

Shane
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24-rc3-git4 NFS crossmnt regression

2007-12-07 Thread Shane
On Dec 7, 2007 1:46 PM, Trond Myklebust <[EMAIL PROTECTED]> wrote:
...
> This problem has already been reported. The fix (which I'm planning on
> sending to Linus soon) is appended.

Thanks Trond. Sorry for the duplicate report, I did actually do some
searching...

I will confirm the fix.

Shane
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24-rc3-git4 NFS crossmnt regression

2007-12-07 Thread Shane
> I will do a few more builds/boots and check -rc3-git2 and -rc3-git3.

Okie, the problem was introduced in 2.6.24-rc3-git2.

2.6.24-rc3-git1   Good
2.6.24-rc3-git2   Bad

The exact output from one 'ls' command is:

ls: /dirA/dirB/dirC: Stale NFS file handle
ls: /dirA/dirB/dirC: Stale NFS file handle

Shane
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24-rc3-git4 NFS crossmnt regression

2007-12-07 Thread Shane
On Dec 7, 2007 7:02 AM, Andrew Morton <[EMAIL PROTECTED]> wrote:
...
> > 2.6.24-rc3-git1 is last known good kernel. The problem also exists
> > with the latest snap 2.6.24-rc4-git4. NFS server is 2.6.23-rc9 and
> > is unchanged.
>
> hm, there have been no nfs changes since 2.6.24-rc4.

Ok, but the problem seems to have appeared before 2.6.24-rc4.

> > It is easily reproducible here, hopefully for the person who
> > knows how to debug it too :)
> >
>
> I guess a full set of the commands which you typed to reproduce this would
> help.

Server is 2.6.23-rc9 and is exporting:

/dirA/dirB
10.10.20.0/255.255.255.0(rw,async,no_root_squash,no_subtree_check,insecure,crossmnt)
/dirA/dirB/dirC
10.10.20.0/255.255.255.0(rw,async,no_root_squash,no_subtree_check,insecure)
/dirA/dirB/dirD
10.10.20.0/255.255.255.0(rw,async,no_root_squash,no_subtree_check,insecure)

The NFS client (Core2 SMP) 2.6.24-rc3-git4:

NFS-server:/dirA/dirB /dirA/dirBnfs
auto,rsize=16384,wsize=16384,hard,intr,users,exec,nfsvers=3,tcp,nolock,actimeo=0

Then on the client when the new kernel has booted:

ls /dirA/dirB  --> normal listing
ls /dirA/dirB/dirC   -->  Stale NFS file handle
ls /dirA/dirB/dirD   -->  Stale NFS file handle

I will do a few more builds/boots and check -rc3-git2 and -rc3-git3.

Will report back shortly,

Shane
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24-rc3-git4 NFS crossmnt regression

2007-12-07 Thread Shane
On Dec 7, 2007 7:02 AM, Andrew Morton [EMAIL PROTECTED] wrote:
...
  2.6.24-rc3-git1 is last known good kernel. The problem also exists
  with the latest snap 2.6.24-rc4-git4. NFS server is 2.6.23-rc9 and
  is unchanged.

 hm, there have been no nfs changes since 2.6.24-rc4.

Ok, but the problem seems to have appeared before 2.6.24-rc4.

  It is easily reproducible here, hopefully for the person who
  knows how to debug it too :)
 

 I guess a full set of the commands which you typed to reproduce this would
 help.

Server is 2.6.23-rc9 and is exporting:

/dirA/dirB
10.10.20.0/255.255.255.0(rw,async,no_root_squash,no_subtree_check,insecure,crossmnt)
/dirA/dirB/dirC
10.10.20.0/255.255.255.0(rw,async,no_root_squash,no_subtree_check,insecure)
/dirA/dirB/dirD
10.10.20.0/255.255.255.0(rw,async,no_root_squash,no_subtree_check,insecure)

The NFS client (Core2 SMP) 2.6.24-rc3-git4:

NFS-server:/dirA/dirB /dirA/dirBnfs
auto,rsize=16384,wsize=16384,hard,intr,users,exec,nfsvers=3,tcp,nolock,actimeo=0

Then on the client when the new kernel has booted:

ls /dirA/dirB  -- normal listing
ls /dirA/dirB/dirC   --  Stale NFS file handle
ls /dirA/dirB/dirD   --  Stale NFS file handle

I will do a few more builds/boots and check -rc3-git2 and -rc3-git3.

Will report back shortly,

Shane
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24-rc3-git4 NFS crossmnt regression

2007-12-07 Thread Shane
 I will do a few more builds/boots and check -rc3-git2 and -rc3-git3.

Okie, the problem was introduced in 2.6.24-rc3-git2.

2.6.24-rc3-git1   Good
2.6.24-rc3-git2   Bad

The exact output from one 'ls' command is:

ls: /dirA/dirB/dirC: Stale NFS file handle
ls: /dirA/dirB/dirC: Stale NFS file handle

Shane
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24-rc3-git4 NFS crossmnt regression

2007-12-07 Thread Shane
On Dec 7, 2007 1:46 PM, Trond Myklebust [EMAIL PROTECTED] wrote:
...
 This problem has already been reported. The fix (which I'm planning on
 sending to Linus soon) is appended.

Thanks Trond. Sorry for the duplicate report, I did actually do some
searching...

I will confirm the fix.

Shane
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24-rc3-git4 NFS crossmnt regression

2007-12-07 Thread Shane
On Dec 7, 2007 1:55 PM, Shane [EMAIL PROTECTED] wrote:
 On Dec 7, 2007 1:46 PM, Trond Myklebust [EMAIL PROTECTED] wrote:
 ...
  This problem has already been reported. The fix (which I'm planning on
  sending to Linus soon) is appended.

 Thanks Trond. Sorry for the duplicate report, I did actually do some
 searching...

 I will confirm the fix.

Confirmed working in rc4-git5.  I'll deploy this kernel in a few more
spots and check for other regressions.

Thanks again,

Shane
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24-rc3-git4 NFS crossmnt regression

2007-12-07 Thread Shane
On Dec 7, 2007 2:16 PM, Shane [EMAIL PROTECTED] wrote:
...
 Confirmed working in rc4-git5.  I'll deploy this kernel in a few more
 spots and check for other regressions.

Hmm, I installed a new kernel built from the same sources on the NFS
server. And now I don't see anything at all in the crossmnt dirs.

ls /dirA/dirB/dirC  -- zero output (empty dir)

Are there any other pending fixes?

Shane
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.24-rc3-git4 NFS crossmnt regression

2007-12-07 Thread Shane
On Dec 7, 2007 7:15 PM, Andrew Morton [EMAIL PROTECTED] wrote:

 On Sat, 8 Dec 2007 03:00:43 +0300
 Alexey Dobriyan [EMAIL PROTECTED] wrote:

  On Sat, Dec 08, 2007 at 12:43:28AM +0100, Rafael J. Wysocki wrote:
   On Saturday, 8 of December 2007, Andrew Morton wrote:
On Fri, 07 Dec 2007 17:51:58 -0500
Trond Myklebust [EMAIL PROTECTED] wrote:
   

 On Fri, 2007-12-07 at 14:39 -0500, Shane wrote:
  On Dec 7, 2007 2:16 PM, Shane [EMAIL PROTECTED] wrote:
  ...
   Confirmed working in rc4-git5.  I'll deploy this kernel in a few 
   more
   spots and check for other regressions.
 
  Hmm, I installed a new kernel built from the same sources on the NFS
  server. And now I don't see anything at all in the crossmnt dirs.
 
  ls /dirA/dirB/dirC  -- zero output (empty dir)
 
  Are there any other pending fixes?
 
  Shane

 You've probably fallen afoul of

http://bugzilla.kernel.org/show_bug.cgi?id=9504

   
Yeah.
   
I have a tentative fix below but I can't seem to get Eric and Denis to 
get
a suitable fix nailed down.  It's urgent!
  
   Well, how about asking Linus to revert commit
   2b1e300a9dfc3196ccddf6f1d74b91b7af55e416 altogether and starting over 
   again?
  
   It apparently causes more trouble than the issue it was supposed to fix.
 
  I very much agree. -shadow_proc is so ugly, so it's not funny anymore.
  Adding such hook for proc part of networking _and_ for modules is just 
  asking
  for trouble as was demonstrated.

 OK, perhaps a revert is the best thing to do here.  I don't think anyone
 will be expecting fully finalised and robust netns support in 2.6.24.

I reverted 2b1e300a9dfc3196ccddf6f1d74b91b7af55e416 and it does fix the NFS
server problem with crossmnt's for me.

Shane
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


  1   2   3   >