LINUX.ORG.RU

Сообщения karak

 

CNet C56K Data/Fax Modem

Подскажите, где можно взять драйвер для CNet C56K Data/Fax Modem?

karak
()

ASPLinux 10

Подскажите плиз, как отключить загрузку стандартных модулей, которые не скомпилированы с ядром для PCI-устройства. Т. е. у меня есть железяка, я написал для нее свой модуль и хочу подгружать его через insmod. Но когда Linux загружается, то для этой железки он цепляет какой-то свой модуль. Контроллер PCI - PLX9030, а модуль в ядре snd_vx222. Спасибо

karak
()

ASPLinux 10

Подскажите плиз, как отключить загрузку стандартных модулей, которые не скомпилированы с ядром для PCI-устройства. Т. е. у меня есть железяка, я написал для нее свой модуль и хочу подгружать его через insmod. Но когда Linux загружается, то для этой железки он цепляет какой-то свой модуль. Контроллер PCI - PLX9030, а модуль в ядре snd_vx222.

karak
()

выделение памяти в модуле ядра

Подскажите пожалуйста, правильно ли выделяется и освобождается память в модуле ядра с целью
последующеготображения через mmap?
После нескольких циклов выделения/освобождения свободная память в системе заканчивается и
не выделяется необходимое количество блоков.
Ядро 2.4.18. Спасибо. Привожу псевдокод выделения/освобождения памяти.
//--------------------------------------------------------------------
//--------------------------------------------------------------------
//--------------------------------------------------------------------
	//Allcoate m_blkNum blcok of memory m_blkSize
	for( ii=0; ii<m_blkNum; ii++ )
	{
		m_arrBlock[ii].sysAdr = pci_alloc_consistent( m_pci, 
							      m_blkSize, 
							      &m_arrBlock[ii].phyAdr );
		
		
		if( pcbuf->m_arrBlock[ii].sysAdr == NULL ) 
		{
			printk("<0> Allocc(()) failed allocate memory for block=%d,\
						 ptr=0x%X\n", ii, (int)pBlk[ii] );
			
			return -ENOMEM;
		}
		
		//try to lock all physical pages in the current block
		lock_pages( m_arrBlock[ii].sysAdr, m_blkSize );
		
	}
	
	//free allocated memory blocks
	for( ii=0; ii<m_blkNum; ii++ )
	{
		if(m_arrBlock[ii].sysAdr != NULL)
		{
			//unlock all physical pages in the current block
			unlock_pages( m_arrBlock[ii].sysAdr, m_blkSize );
				
			pci_free_consistent( m_pci, m_blkSize, 
					     m_arrBlock[ii].sysAdr, 
					     virt_to_bus(m_arrBlock[ii].sysAdr));
		}
	}	
//--------------------------------------------------------------------
//--------------------------------------------------------------------
//--------------------------------------------------------------------
static int lock_pages( void *va, u32 size )
{
	int j=0; 
	
	struct page *start_page_addr = virt_to_page( va );
		
	spin_lock(&init_mm.page_table_lock);
	for (j=0; j < (size >> PAGE_CACHE_SHIFT); j++) {
		SetPageReserved((start_page_addr+j));
		//printk("<0> start_page_addr[%i] = 0x%X\n", j, (int)(start_page_addr+j) );
	}
	spin_unlock(&init_mm.page_table_lock);	
	//set lock status;
		
	return 0;	
} 

//--------------------------------------------------------------------

static int unlock_pages( void *va, u32 size )
{
	int j=0; 
	
	struct page *start_page_addr = virt_to_page( va );
	
	spin_lock(&init_mm.page_table_lock);		
	for (j=0; j < (size >> PAGE_CACHE_SHIFT); j++) {
		ClearPageReserved((start_page_addr+j));
		//printk("<0> start_page_addr[%i] = 0x%X\n", j, (int)(start_page_addr+j) );
	}
	spin_unlock(&init_mm.page_table_lock);
	//clear lock status

	return 0;	
}	

//--------------------------------------------------------------------
karak
()

Memory

Можно ли в user_space выделить блок памяти функцией malloc, а потом по user_space адресу этого блока в модуле ядра получить физический адрес user_space блока, сделать для него SetPageReserved, и после передать физический адрес блока для mmap? P. S. Неначем попробовать пока. Спасибо.

karak
()

Radeon 9000 Pro

Помогите плиз. У меня мама Intel815 c встроенной
видеокартой. Пытаюсь поставить Radeon 9000 Pro,
но безуспешно. После перерзагрузки Linux
загружается в текстовом режиме, что пишет 
непонятно. В итоге загружается в текстовом режиме.
Может как-то специально нужно настраивать XFree86Config?
Есть у кого опыт, поделитесь. Спасибо...
 
karak
()

PLX9656 PCI Bus mastering

Железяка работает в режиме BUS Mastering на PCI шине под управлением драйвера. Данные передаются без ошибок. После этого выгружаю драйвер и загружаю вновь. Загрузка и захват ресурсов происходит без ошибок, но BUS Mastering не стартует. Настройка регистров контроллера PCI, и устройства одинакова в обоих случаях. Спин блокировки не используются. Память выделяется pci_alloc_consistent(), освобождается pci_free_consistent(). Пользовательское приложение делает mmap() для этой памяти. В качестве контроллера PCI используется PLX9656. Почему так происходит не могу понять. Если кто сталкивался с подобным плиз помогите советом...

karak
()

Встроенный ассемблер в модуле ядра

  Помогите с примером плиз!!! Как в исходник модуля на Си вставить ассемблерную инструкцию nop. В виндус это __asm nop.
  Спасибо
karak
()

DMA для PCI в режиме Bus Master

Помогите плиз! Выделяю блок памяти в драйвере PCI устройства с помощью функций kmalloc() или pci_alloc_consistent(), далее проходит цикл DMA. Внутри ядра по адресам, возвращенным этими функциями данные читаю нормально. Далее не удаляя блок из памяти делаю mmap для него, с пометкой блока RESERVED и вызываю remap_page_range(), ошибок не происходит, но читаю из приложения одни нули... Помогите понять в чем проблема... karakozov@inbox.ru Спасибо.

karak
()

RSS подписка на новые темы