Re: accessing bios from kernel module

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2006-06-29 at 14:27 +0200, Weber Matthias wrote:
> Hi,
> 
> i tried to access a pc-bios from within a kernel module as follows:
> 
> short in = 0x6f0a, out;
> asm (
>         "movw %1, %%ax;"
>         "int $0x15;"
>         "movw %%ax, %0;"
>         :"=r"(out)
>         :"r"(in)
>         :"%ax"
> );
> 
> printk("%x\n", (int) out);
> 
> It seems, that the interrupt to bios is ignored, because nothing
> happens. Has anyone some link, example code or tip, that could help?


Hi,

it's not like this.... the PCI bios runs in real mode, and expects real
mode. The kernel runs in 32 bit (protected) mode. You really can't mix
the two.... so I'd have to say you really really can't do this.

There are a few 32 bit bios services, but in practice they are poorly
implemented by most bioses, especially the parts that modern windows
versions don't use.

So.. there has to be a better way to do what you want to really
achieve... can you explain what you really want to achieve so that we
can offer suggestions for that?

Greetings,
   Arjan van de Ven

Note: there are some usermode programs that use vm86 mode, or full x86
emulation to do some video bios calls for mode setting and EDID; however
that is very specific and limited functionality that works "most of the
time". Even that is hard, and that's from userspace, where this sort of
thing is a lot easier...


--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           http://kernelnewbies.org/faq/


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux