LINUX.ORG.RU

Можно ли найти PCMCIA CardBus жесткий диск без BIOS и ACPI

 cardbus,


0

2

Привет, лорчик!!

У меня, наверное, больше теоретический вопрос, может быть даже праздный, риторический. Так как я и сам понимаю, что ответ на него скорее всего вовсе не 42, а суровое, сухое, математико-техническое «нет». Когда долгое время работаешь в математике, начинаешь понимать, что некоторые вещи увы, невозможны в принципе. Что называется оставь надежду всяк входящий.

В общем, основная проблема в том, что биос (на пару с ACPI) не настраивают конфигурационное пространство шины PCI для PCMCIA CardBus слота Ricoh R5C485. Из-за чего yenta_socket драйвер не может выделить ресурсы для bar0, bar1. В слот вставлен жесткий диск и системе он не виден, для нее он в шапке-невидимке. Правильно ли я понимаю, это всё, тупик, железку в мусорку и т.д? Ничего сделать невозможно. Я бы и сам вписал адрес в конфиг-спейс, но откуда я могу узнать, что туда писать?

★★★★★

(на пару с ACPI) не настраивают конфигурационное пространство шины PCI для PCMCIA CardBus слота Ricoh R5C485

Это как так то? Глупость какая-то делать комп с неработающим CardBus слотом.
Под офтопиком тоже? а под ДОС-ами? и т.д.

anonymous
()

не сталкивался, но проблема с адресами для pci не новая. попробуй

# попробуй
pci=realloc
# или наоборот
pci=realloc=off

запасной вариант - прикинуться виндой (acpi_osi, acpi_os_name), чтобы получить из dsdt другие данные

router ★★★★★
()
Последнее исправление: router (всего исправлений: 1)
Ответ на: комментарий от router

и когда будешь пробовать эти параметры, результат можно посмотреть в

  • /proc/iomem
  • /proc/ioport

Вообще 99% косяков с ACPI приходят из кривого DSDT (одна из таблиц ACPI), если вендор не рассчитывал на linux

если силен духом, dsdt можно декомпилировать и прочитать в поисках проблем (я в свое время не осилил. предпочел покупать железо, с которым нет проблем)

router ★★★★★
()
Ответ на: комментарий от router

Интересно.. Опция pci=realloc сработала на ядре 5.15. Но не работает на 4.9. Есть догадки почему? Мне бы надо именно на 4.9 запустить. Потому что под 5.15 у нас остальных дров нет.

Винду семерку пробовал тоже. Она тоже не видит ни слот, ни диск.

hibou ★★★★★
() автор топика
Ответ на: комментарий от hibou

Опция pci=realloc сработала на ядре 5.15. Но не работает на 4.9. Есть догадки почему?

Ну … они разные %) Попробуй сравнить для них

dmesg
lspci -vvnk   # будут видны в т.ч. адреса
cat /proc/iomem
cat /proc/ioport

вообще в dmesg вполне могут быть ошибки, о которых знает гугл

опять же, я бы загуглил linux $NOTEBOOK_MODEL pcmcia issue

Ну еще для pci есть много других интересных параметров, но тут нужно больше знаний, чем у меня

ещё стоит покопаться в bios (ну или uefi). может там есть что-то про выделение памяти для pci

Винду семерку пробовал тоже. Она тоже не видит ни слот, ни диск.

Уже интереснее. Прям винду, или прикидывался виндой через acpi_osi? Странно, что есть проблемы

А какая модель ноута, если не секрет?

router ★★★★★
()
Ответ на: комментарий от router

Винду прям поставил. Семерку. Не видит, не-а. Но AIDA Pro видит какие-то адреса, якобы занимаемые устройством. И еще мы все биосы перепробовали, что были в нашей доступности. Картина та же.

Это не ноут. Это экспериментальная железка компании. Которая, по идее, даже включаться не обязана. Тут я работаю в полуслепом поле, никогда не знаешь точно, это я дурак или железка. )))

Но то, что 5.15 ядро смогло обнаружить слот и диск – это вселяет надежду, что спаяно-собрано все правильно, шина рабочая.

Вообще я сегодня поизучал еще, дело вот в чем:

pci 0000:02:01.0: BAR 0: no space for [mem size 0x00001000]
pci 0000:02:01.0: BAR 0: failed to assign [mem size 0x00001000]

– вот так говорят оба ядра, что 4-e, что 5.15.

Но!!! Потом 5.15 делает финт ушами:

pci 0000:02:01.0: BAR 0: assigned [mem 0x80000000-0x80000fff]

Хоба!!! Фокус-покус-барабокус.

4-е ядро так не умеет хоть ты тресни. С этой стороны интересно, можно заставить 4-е ядро сделать также?

hibou ★★★★★
() автор топика
Ответ на: комментарий от hibou

Т.е. это прям ваша разработка? Тогда можно аккуратно загнать в угол разработчика и предложить ему за кофе рассказать про pci memory range assign :) Ну типа что он видит как художник, и не зажигают ли строки из dmesg какую-нибудь лампу в его голове

Может даже подскажет, как пропатчить DSDT

router ★★★★★
()
Последнее исправление: router (всего исправлений: 2)
Ответ на: комментарий от router

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

Теоретически у меня есть даташит на процессор. И даже контакты с китайцами. Но изучать я это буду до посинения, а ответа ждать наверное еще дольше. Хотел своими силами. Но видимо придется писать письмо китайцам.

hibou ★★★★★
() автор топика
Ответ на: комментарий от hibou

Выложи куда-нибудь dsdt, если не закрытые данные. «Я не гинеколог, но посмотреть могу»

cat /sys/firmware/acpi/tables/DSDT > dsdt.dat

Имхо, адреса pci к конкретному процессору вообще не привязаны

router ★★★★★
()
Последнее исправление: router (всего исправлений: 1)

что биос (на пару с ACPI) не настраивают конфигурационное пространство шины PCI для PCMCIA

Идейки от мимокрока.
а) Не завезли PnP. Семерочка какбэ намекае
б) В до PnP-шные времена адреса ввода-вывода и прерывание прописывались конфиг драйвера под досом, и резервировались в диспетчере устройств под офтоп95 (оср2 и 98 уже умели). А перед этим резервировались в биосе.
в) Выпрашивать у автора биоса PnP-обнговку
г) Сравнить исходники 4 и 5 ядер
д) Типичные адреса и прерывание для контроллера подсмотреть в инфах драйверов под офтопик, и использовать ихдля начала.

ЗЫЖ я не настоящий сварщик

anonymous
()
Ответ на: комментарий от steemandlinux

Это все не так просто. И даже адаптировать исходники под новые ядра мне никто не даст столько часов. Это вообще уходящая разработка, сейчас же все на китайский ARM64 переходят. А эту закопали уж почти.

hibou ★★★★★
() автор топика
Ответ на: комментарий от hibou

Мне тут скорее понравилась процедура ядра, вызываемая pci=realloc, Очевидно, ядро само пересчитывает и заполняет конфигурационное пространство PCI на все устройства. Интересно бы узнать подробнее, как работает и как ему подсказать адреса.

hibou ★★★★★
() автор топика
Ответ на: комментарий от hibou

Причем, я открыл исходники этого драйвера yenta_socket. Там вообще отпад, чтоб я так дрова писал. Народ вообще не парится, похоже. Там просто:

	if (!pci_resource_start(dev, 0)) {
		dev_err(&dev->dev, "No cardbus resource!\n");
		ret = -ENODEV;
		goto release;
	}

То есть, если пси_ресурс_старт завершилась с ошибкой, всё, идите лесом. И даже не буду пробовать что-то сделать. Типа настраивайте правильно свой конфиг-спейс и только потом приходите.

Зашибись воще!

hibou ★★★★★
() автор топика
Ответ на: комментарий от router

З.Ы. если эта железка такая хитрая, то вместо acpi у нее может быть dtb, как у ведроида (либо вкомпилен в ядро, либо загрузчик передает его ядру)

/sys/firmware/devicetree/base

router ★★★★★
()
Последнее исправление: router (всего исправлений: 1)