информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / operating systems
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[NT] Тады "Ой!"... :) Видимо, будет клинч... 22.01.03 15:14  Число просмотров: 1353
Автор: Sandy <Alexander Stepanov> Статус: Elderman
<"чистая" ссылка>
<operating systems>
[NT] Управление питанием 22.01.03 11:25  
Автор: leo <Леонид Юрьев> Статус: Elderman
<"чистая" ссылка>
На днях отлаживал драйвер, нашел свою ошибку, исправил. Но по-пути пришел к выводу что в системе управления питанием W2K/XP и т.д. возможен "корректный" deadlock.
Возможно что я ошибаюсь, вот собственно поэтому и хочу обсудить...

1) Имеем два устройства "bus enumerator" - BusFDO и его "child device" - ChildPDO. Оба устройства без DO_POWER_INRUSH;
2) Предположим что в некоторый момент времени BusFDO был в PowerDeviceD1, а ChildPDO в PowerDeviceD2;
3) Далее юзер начинает использовать ChildPDO, и function-драйвер над ChildPDO запускает запрос на PowerDeviceD0 для стека ChildPDO;
4) Предположим, что одновременно с этим истекает интервал IdleDetection для BusFDO, и "Power Manager" запускает запрос на PowerDeviceD3 для BusFDO (или еще как-нибудь возникает запрос на PowerDeviceD3);
5) Далее bus-драйвер для ChildPDO запускает запрос на PowerDeviceD0 для BusFDO и ждет результата, при этом power-стек ChildPDO остается занятым;
6) Но и стек BusFDO уже занят запросом PowerDeviceD3, причем драйвер BusFDO сначала выключит все child-устройства, и только потом продолжит обработку запроса на PowerDeviceD3;
7) В итоге получается deadlock между запросами, и его нельзя просто "развязать" в bus-драйвере, потому что обработка power-запросов должна быть последовательной хотя и асинхронной, и всегда начинаться с верхушки стека;

Ну хоть кто-нибуть что-нибудь понял ?
[NT] Управление питанием 22.01.03 12:12  
Автор: Sandy <Alexander Stepanov> Статус: Elderman
<"чистая" ссылка>
> На днях отлаживал драйвер, нашел свою ошибку, исправил. Но
> по-пути пришел к выводу что в системе управления питанием
> W2K/XP и т.д. возможен "корректный" deadlock.
> Возможно что я ошибаюсь, вот собственно поэтому и хочу
> обсудить...
>
> 1) Имеем два устройства "bus enumerator" - BusFDO и его
> "child device" - ChildPDO. Оба устройства без
> DO_POWER_INRUSH;
> 2) Предположим что в некоторый момент времени BusFDO был в
> PowerDeviceD1, а ChildPDO в PowerDeviceD2;
> 3) Далее юзер начинает использовать ChildPDO, и
> function-драйвер над ChildPDO запускает запрос на
> PowerDeviceD0 для стека ChildPDO;
> 4) Предположим, что одновременно с этим истекает интервал
> IdleDetection для BusFDO, и "Power Manager" запускает
> запрос на PowerDeviceD3 для BusFDO (или еще как-нибудь
> возникает запрос на PowerDeviceD3);
> 5) Далее bus-драйвер для ChildPDO запускает запрос на
> PowerDeviceD0 для BusFDO и ждет результата, при этом
> power-стек ChildPDO остается занятым;
> 6) Но и стек BusFDO уже занят запросом PowerDeviceD3,
> причем драйвер BusFDO сначала выключит все
> child-устройства, и только потом продолжит обработку
> запроса на PowerDeviceD3;
> 7) В итоге получается deadlock между запросами, и его
> нельзя просто "развязать" в bus-драйвере, потому что
> обработка power-запросов должна быть последовательной хотя
> и асинхронной, и всегда начинаться с верхушки стека;
>
> Ну хоть кто-нибуть что-нибудь понял ?

А разве повер манагер по таймауту от повердевайса0 не отвалится?
[NT] Re: А разве 22.01.03 13:02  
Автор: leo <Леонид Юрьев> Статус: Elderman
<"чистая" ссылка>
> А разве повер манагер по таймауту от повердевайса0 не
> отвалится?

Как он может отвалиться если на стеке активный IRP-запрос без IoCancel.
[NT] Тады "Ой!"... :) Видимо, будет клинч... 22.01.03 15:14  
Автор: Sandy <Alexander Stepanov> Статус: Elderman
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach