Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Пт сен 22, 2017 9:25 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 40 сообщений ]  На страницу Пред. 1 2 3 След.
Автор Сообщение
 Заголовок сообщения: Re: Выключение ПК.
СообщениеДобавлено: Пт сен 30, 2011 10:22 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пт авг 14, 2009 1:46 am
Сообщения: 1291
CleverMouse писал(а):
Ключевое слово - "некоторых". Я так понимаю, что подмена с выключения на рестарт была вызвана именно желанием представить свою позицию в более выгодном свете, чтобы избавиться от упоминания, что это работает только на одиночных чипсетах.
Ключевое слово "подмена" некорректно. Я привел рестарт в качестве наглядного примера прямого PM.
В остальном Вы правы - у меня пока нет гарантии, что недокументированный (вычисленный полуэмпирическим способом) адрес в dx будет правильно работать на всех Феномах и Fusion.

CleverMouse писал(а):
Когда выясняется, что некоторый код якобы где-то не работает, ВНЕЗАПНО именно в сообщении, критикующем этот код и предлагающем свой подход... скажем так, это вызывает некоторые сомнения в истинности утверждения.
1) Еще раз: "универсальный" код вообще на этих чипсетах не работает. Поправьте меня у кого RS880/SB800 или Гудзон. А приведенный прямой код - хотя бы на трех досках проверен.

2) В истинности какого из моих утверждений Вы сомневаетесь?


Вернуться к началу
 Заголовок сообщения: Re: Выключение ПК.
СообщениеДобавлено: Вт окт 04, 2011 12:36 pm 
Не в сети
Just Flooding
Аватара пользователя

Зарегистрирован: Ср май 18, 2005 10:27 am
Сообщения: 430
Serge писал(а):
art_zh
А если надо кеши сбросить и винты запарковать ? У меня материнка отключается когда винт уже явно останавливается.
Ну зачем же ты так необъективно?
Ведь если мы говорим об ОС, а это вроде так на этом форуме, то завершение дисковых операций предварительно и до выключения, равно, как и завершение процессов (имеется ввиду корректно + важных + системных) на совести разрабов этой ОСи!
Никакой ACPI или еще что то на блюдечке и готовое не решает эту и другие подобные идеологические, концептуальные вещи, я бы сказал культурности и корректности работы ОСи.
Второе. Парковать диски, как дословное понимание сути механических процессов в винте, решены производителями давно, уже лет 10 наверное как. Это понятие для обывателя можно отнести в категорию архаизмов.


Вернуться к началу
 Заголовок сообщения: Re: Выключение ПК.
СообщениеДобавлено: Вт окт 04, 2011 12:37 pm 
Не в сети
Just Flooding
Аватара пользователя

Зарегистрирован: Ср май 18, 2005 10:27 am
Сообщения: 430
CleverMouse писал(а):
Последние две фразы art_zh инициировали бурную флудильню
CleverMouse писал(а):
Ключевое слово - "некоторых". Я так понимаю, что подмена с выключения на рестарт была вызвана именно желанием представить свою позицию в более выгодном свете, чтобы избавиться от упоминания, что это работает только на одиночных чипсетах.

Оскорбительные выражения убраны! Mario
Я могу понять любую ситуацию в принципе, но надо же работать над своими недостатками, а не выпячивать них наружу, имено это среднестатистическая норма в основной массе людей.
Ну хорошо, допустим родила (выделила) ты эту тему именно так, озаглавила, причем это, как думаешь именно ты, ну так веди ее, тогда пожалуйста, раз она всплывает не раз и два. Освети перечень вопросов тобою видимых, иерархию, приоритет решений, или возможные направления решения... Неконструктивно ведь получается, нехорошо.
То, что выкинула в сторону и все? Типа вот они тут такие, на них тут и смотрите, какие они несостоятельные. Так что ли?


Вернуться к началу
 Заголовок сообщения: Re: Выключение ПК.
СообщениеДобавлено: Вт окт 04, 2011 12:45 pm 
VaStaNi
Просьба не употреблять нецензурных выражений в оскорбительном контексте. Это не приказ - это просьба!


Вернуться к началу
   
 Заголовок сообщения: Re: Выключение ПК.
СообщениеДобавлено: Вт окт 04, 2011 12:54 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пт авг 14, 2009 1:46 am
Сообщения: 1291
VaStaNi
Не надо так.
Давайте относиться друг к другу спокойно и уважительно, иначе к чему мы тут придем?

Со своей строны CleverMouse совершенно права: если цель - универсальность, то средство одно: ACPI.

И в проницательности ей не откажешь: я действительно слукавил, приведя пример с перезагрузкой в теме про выключение.
Код выключения недокументирован, его пришлось выцарапывать из реального железа, поэтому без гарантий.


Вернуться к началу
 Заголовок сообщения: Re: Выключение ПК.
СообщениеДобавлено: Вт окт 04, 2011 12:57 pm 
Не в сети
Just Flooding
Аватара пользователя

Зарегистрирован: Ср май 18, 2005 10:27 am
Сообщения: 430
Конкретно по сабжу, применительно к охрененному количеству машин с INTELовским чипсетом!
Благо разумники из INTEL в принципе уважают слово стандарт,
то применительно к их чипсетам (если уж кому то очень надо без всяких уродств аля RM DOS APM... INT 0x15... ) прекрасно работает следующий код:
Код:
        xor     cx, cx
        dec     cx         ; = 0xFFFF
        mov     dx, 0x404
        in      ax, dx
        cmp     ax, cx     ;примитивно понюхаем есть ли сей порт вообще в наличии?
         jne    @a         ;если AX <> 0xFFFF - значит существует, будем выключать
        mov     dx, 0x4004
        in      ax, dx
        cmp     ax, cx     ;тогда, может этот есть (т.е. 0x4004)?
         je     @q
@a:
        mov     ah, 111100b
        out     dx, ax     ; собственно тут рубильник выключается фактически, не успеете моргнуть! Завершаемся заранее!
@q:
как в PCI, например узнать, что именно INTEL что такое ID=8086 писать не буду, сами знаете...
Это самый "дубовый" вариант, его можно сделать умнее сток на... ну 20 пусть. Но это не килобайты и по статистике моего тестинга (а машин на лет 8 последних я попробовал немало) пока этих двух портов хватало ДЛЯ ВСЕХ INTELовских чипсетов, что попадались.
Желательно сообщить Ваши результаты и при отрицательном выложить данные вашего южника.
Успехов!


Вернуться к началу
 Заголовок сообщения: Re: Выключение ПК.
СообщениеДобавлено: Вт окт 04, 2011 2:22 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3928
VaStaNi
Мобильным винтам парковка очень даже нужна. Они конечно сами паркуются, но немного времени для этого им необходимо. Другие устройства тоже неплохо отключить штатно. Хорошо когда есть драйверы, которые умеют переводить все устройства из D0 в D3. А если их нет помогает ACPI. Потому что самый неправильный способ выключить компьютер это выдернуть штепсель.


Вернуться к началу
 Заголовок сообщения: Re: Выключение ПК.
СообщениеДобавлено: Вт окт 04, 2011 2:32 pm 
С точки зрения механики - выдирание штепселя ничего не испортит - да, электроника не любит включения и выключения, но головки давно уже сами паркуются. Они во время работы удерживаются сервоприводами, а как только питание пропадает, то за счет механики головка паркуется в свой паз. Вот только имеется существенный минус в виде недописанных (и соответственно пропавших) данных.


Вернуться к началу
   
 Заголовок сообщения: Re: Выключение ПК.
СообщениеДобавлено: Вт окт 04, 2011 2:41 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Кроме недописанных данных это приводило (и не раз) у меня к слетанию ext4 на жестком. Еще я боюсь, что есть связь между этим казусом ипоявлением bad-блоков на устройстве.


Вернуться к началу
 Заголовок сообщения: Re: Выключение ПК.
СообщениеДобавлено: Вт окт 04, 2011 2:44 pm 
Так Ext4 содержит кучу служебных данных в оперативке и синхронизация у нее не так часто происходит, так что ничего удивительного.
А бэд-блоки появляются чаще из-за того что во время работы жесткий диск подвергался либо вибрации, либо его вообще перемещали, если это переносной, ну, и в вертикальном положении он не жилец еще.


Вернуться к началу
   
 Заголовок сообщения: Re: Выключение ПК.
СообщениеДобавлено: Ср окт 05, 2011 2:13 am 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пт авг 14, 2009 1:46 am
Сообщения: 1291
Serge
при необходимости D-состояния всех контроллеров моста переключаются в тех же PM-регистрах. Это конечно сложнее, чем просто "вырубить рубильник"; надо делать минимальный драйвер PM и унифицировать его для всех целевых мостов. Но факт: альтернативный "не-ACPI" вектор развития все равно имеется.

Хотя лучше конечно заранее слить кэш на диск из его родного драйвера и не заморачиваться с PM. Это - более прямая "вторая" альтернатива.


Вернуться к началу
 Заголовок сообщения: Re: Выключение ПК.
СообщениеДобавлено: Ср окт 05, 2011 9:46 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3928
art_zh
Разумеется есть альтернатива, но для этого надо иметь родные драйверы. А таких у нас несколько штук в разной стадии недоделанности. И три драйверописателя на всё.


Вернуться к началу
 Заголовок сообщения: Re: Выключение ПК.
СообщениеДобавлено: Чт окт 06, 2011 11:24 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1598
art_zh писал(а):
1) Еще раз: "универсальный" код вообще на этих чипсетах не работает. Поправьте меня у кого RS880/SB800 или Гудзон. А приведенный прямой код - хотя бы на трех досках проверен.

2) В истинности какого из моих утверждений Вы сомневаетесь?

В истинности утверждения 1). На проблемы с выключением жаловался только yogev_ezra, но там проблемы с выключением даже из-под Linux и понятна причина - ACPI нет, а APM не работает из-за того, что в Колибри кривой возврат в реальный режим. Если бы сообщение о нерабочести прозвучало заблаговременно в какой-нибудь теме, кто-нибудь из специалистов - возможно, я - скорее всего, заинтересовался бы - например, попросил/а бы для начала подробнее описать симптомы и приложить дамп таблиц ACPI. А так, когда единственный репортер явно необъективен и никто больше не жалуется, я оставляю за собой право просто не верить в репорт.

Универсальность простого кода выключения через порты для конкретного чипсета - это заблуждение. Есть, к примеру, такой чипсет i440FX, он примечателен тем, что его очень любят эмулировать эмуляторы - например, Bochs, qemu, VirtualBox дружно работают именно с ним. Но код выключения использует разные константы. В Bochs/qemu итоговый код выключения, в предположении, что BIOS не изменила базовый адрес, такой:
Код:
mov dx,0B004h
mov ax,2000h
out dx,ax

В VirtualBox, в том же предположении, - такой:
Код:
mov dx,4004h
mov ax,3400h
out dx,ax

Каким образом различать эти случаи без таблиц ACPI? Порт достать ещё можно, он хранится в PCI-устройстве 8086:7113 в конфигурационном пространстве по смещению 40h - между прочим, это многих интеловских чипсетов касается, так что BIOS спокойно может назначить что-нибудь своё - а вот значение есть только внутри DSDT. Проверка PCI-идентификаторов, скажем, северного моста не подойдёт, они одинаковы.

Между прочим, и код из viewtopic.php?p=38002#p38002, и код из viewtopic.php?p=38269#p38269 - это и есть код ACPI, прямо по спецификации: взять регистр PM1a_CNT_BLK - практически всегда регистры ACPI объединяются в один блок, поскольку этот регистр в FADT перечислен третьим, то и в блоке он идёт третьим, то есть по смещению +4 - и записать туда значение, в котором установлен 13-й бит - он называется SLP_EN - а биты 10-12, называемые SLP_TYPx, кодируют тип сна. Конкретное кодирование может быть совершенно любым - к примеру, в Bochs/qemu 0 означает выключение, а VirtualBox считает, что раз выключение в ACPI называется S5, то и кодировать его можно числом 5.

В частности, поэтому очень странно, что "не работает" универсальный код - если там нет чисто кодерской ошибки, то он на данной машине просто-напросто сводится ровно к неуниверсальному.

_________________
Сделаем мир лучше!


Вернуться к началу
 Заголовок сообщения: Re: Выключение ПК.
СообщениеДобавлено: Пн окт 17, 2011 12:41 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пт авг 14, 2009 1:46 am
Сообщения: 1291
diamond
Если бы твоя ACPI-выключалка работала на Гудзонах, я бы вообще туда не лез. Однако пришлось,- именно потому что
CleverMouse писал(а):
- это и есть код ACPI, прямо по спецификации: взять регистр PM1a_CNT_BLK - практически всегда регистры ACPI объединяются в один блок, поскольку этот регистр в FADT перечислен третьим, то и в блоке он идёт третьим, то есть по смещению +4

Начиная с SB800 это "практически" не работает. АМД решила изобрести новый велосипед и теперь маппит все ресурсы южного моста на MMIO с дефолтным базовым адресом FED80000h, причем PMIO-регистры в этом блоке маппятся со смещением +300h. IO-доступ к этим ресурсам оставлен, но недодокументирован: оговаривается только мл.байт адреса (04), который должен лежать в PM_Reg по смещению 62h.
Старший байт (08) лежит сразу за ним, но это нигде не указано. Именно поэтому я и не даю никаких гарантий, выключая через порт номер 0х0804. Универсальная АМД-выключалка будет работать через MMIO.


Вернуться к началу
 Заголовок сообщения: Re: Выключение ПК.
СообщениеДобавлено: Пн окт 17, 2011 1:26 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3928
art_zh
А что там в таблицах ACPI написано ?


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 40 сообщений ]  На страницу Пред. 1 2 3 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB