Merge tag 'char-misc-3.11-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc
Pull char/misc patches from Greg KH: "Here are some char/misc patches for 3.11-rc3. It's pretty much just: - mei fixes - hyperv fixes - new ja_JP translation update all tiny stuff, but fixes for issues people have reported." * tag 'char-misc-3.11-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: HOWTO ja_JP sync mei: me: fix waiting for hw ready mei: don't have to clean the state on power up mei: me: fix reset state machine mei: hbm: fix typo in error message Tools: hv: KVP: Fix a bug in IPV6 subnet enumeration Drivers: hv: balloon: Do not post pressure status if interrupted Drivers: hv: balloon: Fix a bug in the hot-add code Drivers: hv: vmbus: incorrect device name is printed when child device is unregistered
This commit is contained in:
@@ -11,14 +11,14 @@ for non English (read: Japanese) speakers and is not intended as a
|
|||||||
fork. So if you have any comments or updates for this file, please try
|
fork. So if you have any comments or updates for this file, please try
|
||||||
to update the original English file first.
|
to update the original English file first.
|
||||||
|
|
||||||
Last Updated: 2011/03/31
|
Last Updated: 2013/07/19
|
||||||
==================================
|
==================================
|
||||||
これは、
|
これは、
|
||||||
linux-2.6.38/Documentation/HOWTO
|
linux-3.10/Documentation/HOWTO
|
||||||
の和訳です。
|
の和訳です。
|
||||||
|
|
||||||
翻訳団体: JF プロジェクト < http://www.linux.or.jp/JF/ >
|
翻訳団体: JF プロジェクト < http://linuxjf.sourceforge.jp/ >
|
||||||
翻訳日: 2011/3/28
|
翻訳日: 2013/7/19
|
||||||
翻訳者: Tsugikazu Shibata <tshibata at ab dot jp dot nec dot com>
|
翻訳者: Tsugikazu Shibata <tshibata at ab dot jp dot nec dot com>
|
||||||
校正者: 松倉さん <nbh--mats at nifty dot com>
|
校正者: 松倉さん <nbh--mats at nifty dot com>
|
||||||
小林 雅典さん (Masanori Kobayasi) <zap03216 at nifty dot ne dot jp>
|
小林 雅典さん (Masanori Kobayasi) <zap03216 at nifty dot ne dot jp>
|
||||||
@@ -245,7 +245,7 @@ Linux カーネルソースツリーの中に含まれる、きれいにし、
|
|||||||
自己参照方式で、索引がついた web 形式で、ソースコードを参照することが
|
自己参照方式で、索引がついた web 形式で、ソースコードを参照することが
|
||||||
できます。この最新の素晴しいカーネルコードのリポジトリは以下で見つかり
|
できます。この最新の素晴しいカーネルコードのリポジトリは以下で見つかり
|
||||||
ます-
|
ます-
|
||||||
http://sosdg.org/~qiyong/lxr/
|
http://lxr.linux.no/+trees
|
||||||
|
|
||||||
開発プロセス
|
開発プロセス
|
||||||
-----------------------
|
-----------------------
|
||||||
@@ -253,24 +253,24 @@ Linux カーネルソースツリーの中に含まれる、きれいにし、
|
|||||||
Linux カーネルの開発プロセスは現在幾つかの異なるメインカーネル「ブラン
|
Linux カーネルの開発プロセスは現在幾つかの異なるメインカーネル「ブラン
|
||||||
チ」と多数のサブシステム毎のカーネルブランチから構成されます。
|
チ」と多数のサブシステム毎のカーネルブランチから構成されます。
|
||||||
これらのブランチとは-
|
これらのブランチとは-
|
||||||
- メインの 2.6.x カーネルツリー
|
- メインの 3.x カーネルツリー
|
||||||
- 2.6.x.y -stable カーネルツリー
|
- 3.x.y -stable カーネルツリー
|
||||||
- 2.6.x -git カーネルパッチ
|
- 3.x -git カーネルパッチ
|
||||||
- サブシステム毎のカーネルツリーとパッチ
|
- サブシステム毎のカーネルツリーとパッチ
|
||||||
- 統合テストのための 2.6.x -next カーネルツリー
|
- 統合テストのための 3.x -next カーネルツリー
|
||||||
|
|
||||||
2.6.x カーネルツリー
|
3.x カーネルツリー
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
2.6.x カーネルは Linus Torvalds によってメンテナンスされ、kernel.org
|
3.x カーネルは Linus Torvalds によってメンテナンスされ、kernel.org
|
||||||
の pub/linux/kernel/v2.6/ ディレクトリに存在します。この開発プロセスは
|
の pub/linux/kernel/v3.x/ ディレクトリに存在します。この開発プロセスは
|
||||||
以下のとおり-
|
以下のとおり-
|
||||||
|
|
||||||
- 新しいカーネルがリリースされた直後に、2週間の特別期間が設けられ、
|
- 新しいカーネルがリリースされた直後に、2週間の特別期間が設けられ、
|
||||||
この期間中に、メンテナ達は Linus に大きな差分を送ることができます。
|
この期間中に、メンテナ達は Linus に大きな差分を送ることができます。
|
||||||
このような差分は通常 -next カーネルに数週間含まれてきたパッチです。
|
このような差分は通常 -next カーネルに数週間含まれてきたパッチです。
|
||||||
大きな変更は git(カーネルのソース管理ツール、詳細は
|
大きな変更は git(カーネルのソース管理ツール、詳細は
|
||||||
http://git-scm.com/ 参照) を使って送るのが好ましいやり方ですが、パッ
|
http://git-scm.com/ 参照) を使って送るのが好ましいやり方ですが、パッ
|
||||||
チファイルの形式のまま送るのでも十分です。
|
チファイルの形式のまま送るのでも十分です。
|
||||||
|
|
||||||
- 2週間後、-rc1 カーネルがリリースされ、この後にはカーネル全体の安定
|
- 2週間後、-rc1 カーネルがリリースされ、この後にはカーネル全体の安定
|
||||||
@@ -302,20 +302,20 @@ Andrew Morton が Linux-kernel メーリングリストにカーネルリリー
|
|||||||
実に認識されたバグの状況によりリリースされるのであり、前もって決めら
|
実に認識されたバグの状況によりリリースされるのであり、前もって決めら
|
||||||
れた計画によってリリースされるものではないからです。」
|
れた計画によってリリースされるものではないからです。」
|
||||||
|
|
||||||
2.6.x.y -stable カーネルツリー
|
3.x.y -stable カーネルツリー
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
バージョン番号が4つの数字に分かれているカーネルは -stable カーネルです。
|
バージョン番号が3つの数字に分かれているカーネルは -stable カーネルです。
|
||||||
これには、2.6.x カーネルで見つかったセキュリティ問題や重大な後戻りに対
|
これには、3.x カーネルで見つかったセキュリティ問題や重大な後戻りに対
|
||||||
する比較的小さい重要な修正が含まれます。
|
する比較的小さい重要な修正が含まれます。
|
||||||
|
|
||||||
これは、開発/実験的バージョンのテストに協力することに興味が無く、
|
これは、開発/実験的バージョンのテストに協力することに興味が無く、
|
||||||
最新の安定したカーネルを使いたいユーザに推奨するブランチです。
|
最新の安定したカーネルを使いたいユーザに推奨するブランチです。
|
||||||
|
|
||||||
もし、2.6.x.y カーネルが存在しない場合には、番号が一番大きい 2.6.x が
|
もし、3.x.y カーネルが存在しない場合には、番号が一番大きい 3.x が
|
||||||
最新の安定版カーネルです。
|
最新の安定版カーネルです。
|
||||||
|
|
||||||
2.6.x.y は "stable" チーム <stable@kernel.org> でメンテされており、必
|
3.x.y は "stable" チーム <stable@kernel.org> でメンテされており、必
|
||||||
要に応じてリリースされます。通常のリリース期間は 2週間毎ですが、差し迫っ
|
要に応じてリリースされます。通常のリリース期間は 2週間毎ですが、差し迫っ
|
||||||
た問題がなければもう少し長くなることもあります。セキュリティ関連の問題
|
た問題がなければもう少し長くなることもあります。セキュリティ関連の問題
|
||||||
の場合はこれに対してだいたいの場合、すぐにリリースがされます。
|
の場合はこれに対してだいたいの場合、すぐにリリースがされます。
|
||||||
@@ -324,7 +324,7 @@ Andrew Morton が Linux-kernel メーリングリストにカーネルリリー
|
|||||||
イルにはどのような種類の変更が -stable ツリーに受け入れ可能か、またリ
|
イルにはどのような種類の変更が -stable ツリーに受け入れ可能か、またリ
|
||||||
リースプロセスがどう動くかが記述されています。
|
リースプロセスがどう動くかが記述されています。
|
||||||
|
|
||||||
2.6.x -git パッチ
|
3.x -git パッチ
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
git リポジトリで管理されているLinus のカーネルツリーの毎日のスナップ
|
git リポジトリで管理されているLinus のカーネルツリーの毎日のスナップ
|
||||||
@@ -358,14 +358,14 @@ quilt シリーズとして公開されているパッチキューも使われ
|
|||||||
をつけることができます。大部分のこれらの patchwork のサイトは
|
をつけることができます。大部分のこれらの patchwork のサイトは
|
||||||
http://patchwork.kernel.org/ でリストされています。
|
http://patchwork.kernel.org/ でリストされています。
|
||||||
|
|
||||||
統合テストのための 2.6.x -next カーネルツリー
|
統合テストのための 3.x -next カーネルツリー
|
||||||
---------------------------------------------
|
---------------------------------------------
|
||||||
|
|
||||||
サブシステムツリーの更新内容がメインラインの 2.6.x ツリーにマージされ
|
サブシステムツリーの更新内容がメインラインの 3.x ツリーにマージされ
|
||||||
る前に、それらは統合テストされる必要があります。この目的のため、実質的
|
る前に、それらは統合テストされる必要があります。この目的のため、実質的
|
||||||
に全サブシステムツリーからほぼ毎日プルされてできる特別なテスト用のリ
|
に全サブシステムツリーからほぼ毎日プルされてできる特別なテスト用のリ
|
||||||
ポジトリが存在します-
|
ポジトリが存在します-
|
||||||
http://git.kernel.org/?p=linux/kernel/git/sfr/linux-next.git
|
http://git.kernel.org/?p=linux/kernel/git/next/linux-next.git
|
||||||
http://linux.f-seidel.de/linux-next/pmwiki/
|
http://linux.f-seidel.de/linux-next/pmwiki/
|
||||||
|
|
||||||
このやり方によって、-next カーネルは次のマージ機会でどんなものがメイン
|
このやり方によって、-next カーネルは次のマージ機会でどんなものがメイン
|
||||||
|
@@ -562,7 +562,7 @@ static void hv_mem_hot_add(unsigned long start, unsigned long size,
|
|||||||
struct hv_hotadd_state *has)
|
struct hv_hotadd_state *has)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
int i, nid, t;
|
int i, nid;
|
||||||
unsigned long start_pfn;
|
unsigned long start_pfn;
|
||||||
unsigned long processed_pfn;
|
unsigned long processed_pfn;
|
||||||
unsigned long total_pfn = pfn_count;
|
unsigned long total_pfn = pfn_count;
|
||||||
@@ -607,14 +607,11 @@ static void hv_mem_hot_add(unsigned long start, unsigned long size,
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Wait for the memory block to be onlined.
|
* Wait for the memory block to be onlined.
|
||||||
|
* Since the hot add has succeeded, it is ok to
|
||||||
|
* proceed even if the pages in the hot added region
|
||||||
|
* have not been "onlined" within the allowed time.
|
||||||
*/
|
*/
|
||||||
t = wait_for_completion_timeout(&dm_device.ol_waitevent, 5*HZ);
|
wait_for_completion_timeout(&dm_device.ol_waitevent, 5*HZ);
|
||||||
if (t == 0) {
|
|
||||||
pr_info("hot_add memory timedout\n");
|
|
||||||
has->ha_end_pfn -= HA_CHUNK;
|
|
||||||
has->covered_end_pfn -= processed_pfn;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -978,6 +975,14 @@ static void post_status(struct hv_dynmem_device *dm)
|
|||||||
dm->num_pages_ballooned +
|
dm->num_pages_ballooned +
|
||||||
compute_balloon_floor();
|
compute_balloon_floor();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If our transaction ID is no longer current, just don't
|
||||||
|
* send the status. This can happen if we were interrupted
|
||||||
|
* after we picked our transaction ID.
|
||||||
|
*/
|
||||||
|
if (status.hdr.trans_id != atomic_read(&trans_id))
|
||||||
|
return;
|
||||||
|
|
||||||
vmbus_sendpacket(dm->dev->channel, &status,
|
vmbus_sendpacket(dm->dev->channel, &status,
|
||||||
sizeof(struct dm_status),
|
sizeof(struct dm_status),
|
||||||
(unsigned long)NULL,
|
(unsigned long)NULL,
|
||||||
|
@@ -690,7 +690,7 @@ int vmbus_device_register(struct hv_device *child_device_obj)
|
|||||||
if (ret)
|
if (ret)
|
||||||
pr_err("Unable to register child device\n");
|
pr_err("Unable to register child device\n");
|
||||||
else
|
else
|
||||||
pr_info("child device %s registered\n",
|
pr_debug("child device %s registered\n",
|
||||||
dev_name(&child_device_obj->device));
|
dev_name(&child_device_obj->device));
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -702,14 +702,14 @@ int vmbus_device_register(struct hv_device *child_device_obj)
|
|||||||
*/
|
*/
|
||||||
void vmbus_device_unregister(struct hv_device *device_obj)
|
void vmbus_device_unregister(struct hv_device *device_obj)
|
||||||
{
|
{
|
||||||
|
pr_debug("child device %s unregistered\n",
|
||||||
|
dev_name(&device_obj->device));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Kick off the process of unregistering the device.
|
* Kick off the process of unregistering the device.
|
||||||
* This will call vmbus_remove() and eventually vmbus_device_release()
|
* This will call vmbus_remove() and eventually vmbus_device_release()
|
||||||
*/
|
*/
|
||||||
device_unregister(&device_obj->device);
|
device_unregister(&device_obj->device);
|
||||||
|
|
||||||
pr_info("child device %s unregistered\n",
|
|
||||||
dev_name(&device_obj->device));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -167,7 +167,7 @@ int mei_hbm_start_req(struct mei_device *dev)
|
|||||||
|
|
||||||
dev->hbm_state = MEI_HBM_IDLE;
|
dev->hbm_state = MEI_HBM_IDLE;
|
||||||
if (mei_write_message(dev, mei_hdr, dev->wr_msg.data)) {
|
if (mei_write_message(dev, mei_hdr, dev->wr_msg.data)) {
|
||||||
dev_err(&dev->pdev->dev, "version message writet failed\n");
|
dev_err(&dev->pdev->dev, "version message write failed\n");
|
||||||
dev->dev_state = MEI_DEV_RESETTING;
|
dev->dev_state = MEI_DEV_RESETTING;
|
||||||
mei_reset(dev, 1);
|
mei_reset(dev, 1);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
@@ -239,14 +239,18 @@ static int mei_me_hw_ready_wait(struct mei_device *dev)
|
|||||||
if (mei_me_hw_is_ready(dev))
|
if (mei_me_hw_is_ready(dev))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
dev->recvd_hw_ready = false;
|
||||||
mutex_unlock(&dev->device_lock);
|
mutex_unlock(&dev->device_lock);
|
||||||
err = wait_event_interruptible_timeout(dev->wait_hw_ready,
|
err = wait_event_interruptible_timeout(dev->wait_hw_ready,
|
||||||
dev->recvd_hw_ready, MEI_INTEROP_TIMEOUT);
|
dev->recvd_hw_ready,
|
||||||
|
mei_secs_to_jiffies(MEI_INTEROP_TIMEOUT));
|
||||||
mutex_lock(&dev->device_lock);
|
mutex_lock(&dev->device_lock);
|
||||||
if (!err && !dev->recvd_hw_ready) {
|
if (!err && !dev->recvd_hw_ready) {
|
||||||
|
if (!err)
|
||||||
|
err = -ETIMEDOUT;
|
||||||
dev_err(&dev->pdev->dev,
|
dev_err(&dev->pdev->dev,
|
||||||
"wait hw ready failed. status = 0x%x\n", err);
|
"wait hw ready failed. status = %d\n", err);
|
||||||
return -ETIMEDOUT;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
dev->recvd_hw_ready = false;
|
dev->recvd_hw_ready = false;
|
||||||
@@ -483,7 +487,9 @@ irqreturn_t mei_me_irq_thread_handler(int irq, void *dev_id)
|
|||||||
/* check if ME wants a reset */
|
/* check if ME wants a reset */
|
||||||
if (!mei_hw_is_ready(dev) &&
|
if (!mei_hw_is_ready(dev) &&
|
||||||
dev->dev_state != MEI_DEV_RESETTING &&
|
dev->dev_state != MEI_DEV_RESETTING &&
|
||||||
dev->dev_state != MEI_DEV_INITIALIZING) {
|
dev->dev_state != MEI_DEV_INITIALIZING &&
|
||||||
|
dev->dev_state != MEI_DEV_POWER_DOWN &&
|
||||||
|
dev->dev_state != MEI_DEV_POWER_UP) {
|
||||||
dev_dbg(&dev->pdev->dev, "FW not ready.\n");
|
dev_dbg(&dev->pdev->dev, "FW not ready.\n");
|
||||||
mei_reset(dev, 1);
|
mei_reset(dev, 1);
|
||||||
mutex_unlock(&dev->device_lock);
|
mutex_unlock(&dev->device_lock);
|
||||||
|
@@ -148,7 +148,8 @@ void mei_reset(struct mei_device *dev, int interrupts_enabled)
|
|||||||
|
|
||||||
dev->hbm_state = MEI_HBM_IDLE;
|
dev->hbm_state = MEI_HBM_IDLE;
|
||||||
|
|
||||||
if (dev->dev_state != MEI_DEV_INITIALIZING) {
|
if (dev->dev_state != MEI_DEV_INITIALIZING &&
|
||||||
|
dev->dev_state != MEI_DEV_POWER_UP) {
|
||||||
if (dev->dev_state != MEI_DEV_DISABLED &&
|
if (dev->dev_state != MEI_DEV_DISABLED &&
|
||||||
dev->dev_state != MEI_DEV_POWER_DOWN)
|
dev->dev_state != MEI_DEV_POWER_DOWN)
|
||||||
dev->dev_state = MEI_DEV_RESETTING;
|
dev->dev_state = MEI_DEV_RESETTING;
|
||||||
|
@@ -1026,9 +1026,10 @@ kvp_get_ip_info(int family, char *if_name, int op,
|
|||||||
|
|
||||||
if (sn_offset == 0)
|
if (sn_offset == 0)
|
||||||
strcpy(sn_str, cidr_mask);
|
strcpy(sn_str, cidr_mask);
|
||||||
else
|
else {
|
||||||
|
strcat((char *)ip_buffer->sub_net, ";");
|
||||||
strcat(sn_str, cidr_mask);
|
strcat(sn_str, cidr_mask);
|
||||||
strcat((char *)ip_buffer->sub_net, ";");
|
}
|
||||||
sn_offset += strlen(sn_str) + 1;
|
sn_offset += strlen(sn_str) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user