2008-07-05 14:33:36

by gshan

[permalink] [raw]
Subject: Tough Issue: kernel instruction corruption

Hello, I'm faced a tough issue recently: instructions of kernel
were corrupted. There has 2 PCI buses on my board and lots
of PCI devices with DMA capabality involved. I'm suspecting
the kernel instructions were corrupted by DMA operations driving
by those PCI devices with DMA capabality.

Anybody have tried to protect kernel instructions from this case
or have any ideas to protect kernel text section?

Thanks in advance,
Gavin????{.n?+???????+%?????ݶ??w??{.n?+????{??G?????{ay?ʇڙ?,j??f???h?????????z_??(?階?ݢj"???m??????G????????????&???~???iO???z??v?^?m???? ????????I?


2008-07-05 15:17:41

by Arjan van de Ven

[permalink] [raw]
Subject: Re: Tough Issue: kernel instruction corruption

On Sat, 5 Jul 2008 22:20:46 +0800
"Gavin Shan" <[email protected]> wrote:

> Hello, I'm faced a tough issue recently: instructions of kernel
> were corrupted. There has 2 PCI buses on my board and lots
> of PCI devices with DMA capabality involved. I'm suspecting
> the kernel instructions were corrupted by DMA operations driving
> by those PCI devices with DMA capabality.
>
> Anybody have tried to protect kernel instructions from this case
> or have any ideas to protect kernel text section?

if you have a modern Intel board, you can enable the IOMMU on it that
will protect the kernel text (well, all of memory) from rogue DMA.
PPC generally has similar capabilities, as do some IBM x86 chipsets.

Without an IOMMU it's basically impossible to protect against such DMA.

--
If you want to reach me at my work email, use [email protected]
For development, discussion and tips for power savings,
visit http://www.lesswatts.org

2008-07-05 15:27:37

by gshan

[permalink] [raw]
Subject: Re: Tough Issue: kernel instruction corruption

>> Hello, I'm faced a tough issue recently: instructions of kernel
>> were corrupted. There has 2 PCI buses on my board and lots
>> of PCI devices with DMA capabality involved. I'm suspecting
>> the kernel instructions were corrupted by DMA operations driving
>> by those PCI devices with DMA capabality.
>>
>> Anybody have tried to protect kernel instructions from this case
>> or have any ideas to protect kernel text section?
>
> if you have a modern Intel board, you can enable the IOMMU on it that
> will protect the kernel text (well, all of memory) from rogue DMA.
> PPC generally has similar capabilities, as do some IBM x86 chipsets.

PPC is used now and PPC doesn't have 2 kinds of MMUs. I don't know much
about IOMMU. Is it part of CPU?

>
> Without an IOMMU it's basically impossible to protect against such DMA.

I did a google with "instruction"+"corruption"+"DMA" and found one matched
patent. And I go through the datasheet of PCI chips on my board, unfortunately,
the PCI chip didn't supply address protection from vager DMA.

http://www.freepatentsonline.com/y2005/0182862.html

>
> --
> If you want to reach me at my work email, use [email protected]
> For development, discussion and tips for power savings,
> visit http://www.lesswatts.org
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>????{.n?+???????+%?????ݶ??w??{.n?+????{??G?????{ay?ʇڙ?,j??f???h?????????z_??(?階?ݢj"???m??????G????????????&???~???iO???z??v?^?m???? ????????I?

2008-07-07 15:48:39

by Stefan Richter

[permalink] [raw]
Subject: Re: Tough Issue: kernel instruction corruption

Gavin Shan wrote:
> I'm suspecting
> the kernel instructions were corrupted by DMA operations driving
> by those PCI devices with DMA capabality.
>
> Anybody have tried to protect kernel instructions from this case
> or have any ideas to protect kernel text section?

IOMMU hardware can give some protection. Correctly working PCI devices
and _correct drivers_ would be good to have too.
--
Stefan Richter
-=====-==--- -=== --===
http://arcgraph.de/sr/