Quantcast
Channel: Ru.Board
Viewing all articles
Browse latest Browse all 927759

Windows 98 SE (оптимизация и улучшение) — одиннадцатая часть (2060) / Всякие-разные улучшения и умеренное общение по теме

$
0
0
SweetLow:
MERCURY127

Цитата:
420TX?

Ну Windows 95 же, какие ещё варианты?


Цитата:
неужто 92—93 годы...

По всем описаниям код Windows 95 писали в 93-95 годах.


Цитата:
PCI IRQ steering?

Именно. В оригинальной Windows 95 управления прерываниями PCI ещё не было. Собственно это и так можно предположить по чисто формальной логике - раз из-за наличия возникает ПРОБЛЕМА.

И вот здесь и начинается цепочка событий:
1. В 1996 управление прерываниями добавляют для 95 OSR2 (если я правильно помню). И в УСТАНОВЛЕННОЙ системе это работает хорошо (разумеется, работало бы оно плохо - с исполнителей голову бы сняли). Однако при начальной установке - возникает проблема конфликта ресурсов роутера PCI прерываний с PCI устройствами на которую то ли не обращают внимание (но я в это не верю), то ли принимают решение забить болт (что намного вероятнее), поскольку на конечный результат установки ТОГДА эта проблема не влияет.
2. В 2003 с появлением PCI-E эта проблема могла бы проявиться, да только условия проявления всё равно отсутствуют, ибо ВСТРОЕННЫХ драйверов для нового железа ни в сабже, ни даже в миллениуме НЕТ, и драйверы доставляются уже обычно в работающую систему.
3. Но вот в 2019 году некто MERCURY127 & IFkO при изготовлении интегрированного дистрибутива таки ПОПАДАЮТ на эту проблему и обращаются с вопросом "а что это за хрень?" к опять же некоему SweetLow :gigi:
4. Самое любопытное, что по всем раскладам на реально НОВЫХ системах эта хрень проявляться вообще не должна, поскольку в режиме NoPnP (setup /p i) управление прерываниями включаться НЕ ДОЖНО (а вот для ACPI наоборот - маршрутизация всегда включена). Но тут именно для Интела существует презабавнейший факт - таблицы маршрутизации прерываний PCI имеются в BIOS даже в весьма новых системах (в ноуте на Core 8 - ещё есть), имеют такое поле, как PCI ID СОВМЕСТИМОГО маршрутизатора и там во всех исследованных мной примерах записан PCI\VEN_8086&DEV_122E = "Мост Intel 82371FB PCI - ISA", для которого в сабже ИМЕЕТСЯ запись как для маршрутизатора.


Ну что, нравится? Удовлетворены ответом? А будет ещё лучше, ибо это всё пока описание фактов описывающих "кто виноват?". Но как я люблю говорить в конце анализа - пора переходить к "что делать?". И вот тут я не даром писал про
Цитата:
контрольный эксперимент
и
Цитата:
вопрос ... ещё лучше
. Ибо никакого патча ни PCI.VXD, ни чего либо другого делать не надо - всё уже и так встроено в систему!

Включение управления прерываниями PCI - это вовсе не ОБЯЗАТЕЛЬНАЯ фича. Более того, она как раз единственная которая включается особым образом (через реестр):

MACHINE.INF:[PCI_DRV_AddReg]
; Options setting
; Bit 0 is set for using BIOS services instead of hardware
; Bit 1 is set for using IRQ steering
; Bit 2 is set for overriding bridge programming by BIOS
; Bit 3 is set to disable GAT bit override
; Bit 4 is set to force GAT always on when overriding (bit 3 must be clear)
HKLM,System\CurrentControlSet\Services\VxD\PCI,Options,3,02,00,00,00

И если заменить это на
HKLM,System\CurrentControlSet\Services\VxD\PCI,Options,3,00,00,00,00
то всё начинает работать ожидаемо правильным образом.

И если IFkO придумает как на момент установки применить изменённую версию MACHINE.INF, а после установки - восстановить оригинальную версию MACHINE.INF плюс включить в реестре второй бит в Options, то всё станет вообще хорошо :)


Viewing all articles
Browse latest Browse all 927759

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>