List Info

Thread: disk specific ATA DMA




disk specific ATA DMA
country flaguser name
Netherlands
2008-01-12 17:32:34
Hi,

I am building a low power "home" server using a 
EPIA mini ITX  
system.  Solaris is installed on a CF card and the data is
on a 2 disk  
zpool. The CF card is connected to IDE0 and the zpool disks
are  
connected to IDE1.

In order to install Solaris on CF, I had to add "-B
ata-disk-dma- 
enabled=0" to the $kernel line in grub's menu.lst.

As a result of this, ATA DMA is disabled for *all* disks
which makes  
the zpool slow. I am looking for ways to enable ATA DMA for
the disks  
in the zpool whilst disabling it for the CF card.

The CF card is
  c0d0 /devices/pci0,0/pci-ide11,1/ide0/cmdk0,0

The zpool is
  c1d0 /devices/pci0,0/pci-ide11,1/ide1/cmdk0,0
  c1d1 /devices/pci0,0/pci-ide11,1/ide1/cmdk1,0

I tried adding
  name="ata" parent="/pci0,0/pci-ide" instance=0
ata-options="0";
to /kernel/drv/ata.conf but that did not work (DMA remained
enabled on  
the CF card).

So, I am looking for a way to disable ATA DMA for a specific
disk and  
to have it enabled for other disks. Anyone knows? (nvx80)

Thanks, Joost






_______________________________________________
appliances-discuss mailing list
appliances-discussopensolaris.org
http://mail.opensolaris.org/mailman/listinfo/appl
iances-discuss

Re: disk specific ATA DMA
country flaguser name
Netherlands
2008-01-13 05:24:23
I came to the conclusion that this cannot be done.  DMA can
only be  
enabled/disabled per device class (eg disk, cdrom).


On Jan 13, 2008, at 12:32 AM, Joost Mulders wrote:

> Hi,
>
> I am building a low power "home" server using
a  EPIA mini ITX  
> system.  Solaris is installed on a CF card and the data
is on a 2  
> disk zpool. The CF card is connected to IDE0 and the
zpool disks are  
> connected to IDE1.
>
> In order to install Solaris on CF, I had to add
"-B ata-disk-dma- 
> enabled=0" to the $kernel line in grub's
menu.lst.
>
> As a result of this, ATA DMA is disabled for *all*
disks which makes  
> the zpool slow. I am looking for ways to enable ATA DMA
for the  
> disks in the zpool whilst disabling it for the CF
card.
>
> The CF card is
> c0d0 /devices/pci0,0/pci-ide11,1/ide0/cmdk0,0
>
> The zpool is
> c1d0 /devices/pci0,0/pci-ide11,1/ide1/cmdk0,0
> c1d1 /devices/pci0,0/pci-ide11,1/ide1/cmdk1,0
>
> I tried adding
> name="ata" parent="/pci0,0/pci-ide" instance=0
ata-options="0";
> to /kernel/drv/ata.conf but that did not work (DMA
remained enabled  
> on the CF card).
>
> So, I am looking for a way to disable ATA DMA for a
specific disk  
> and to have it enabled for other disks. Anyone knows?
(nvx80)
>
> Thanks, Joost
>
>
>
>
>
>

_______________________________________________
appliances-discuss mailing list
appliances-discussopensolaris.org
http://mail.opensolaris.org/mailman/listinfo/appl
iances-discuss

Re: disk specific ATA DMA
country flaguser name
United States
2008-01-14 04:41:07
Joost Mulders wrote:
> Hi,
> 
> I am building a low power "home" server using
a  EPIA mini ITX  
> system.  Solaris is installed on a CF card and the data
is on a 2 disk  
> zpool. The CF card is connected to IDE0 and the zpool
disks are  
> connected to IDE1.
> 
> In order to install Solaris on CF, I had to add
"-B ata-disk-dma- 
> enabled=0" to the $kernel line in grub's
menu.lst.
> 
> As a result of this, ATA DMA is disabled for *all*
disks which makes  
> the zpool slow. I am looking for ways to enable ATA DMA
for the disks  
> in the zpool whilst disabling it for the CF card.
> 
> The CF card is
>   c0d0 /devices/pci0,0/pci-ide11,1/ide0/cmdk0,0
> 
> The zpool is
>   c1d0 /devices/pci0,0/pci-ide11,1/ide1/cmdk0,0
>   c1d1 /devices/pci0,0/pci-ide11,1/ide1/cmdk1,0
> 
> I tried adding
>   name="ata" parent="/pci0,0/pci-ide" instance=0
ata-options="0";
> to /kernel/drv/ata.conf but that did not work (DMA
remained enabled on  
> the CF card).
> 
> So, I am looking for a way to disable ATA DMA for a
specific disk and  
> to have it enabled for other disks. Anyone knows?
(nvx80)

I haven't tried this but instead of trying to disable it for
the CF card 
  have you tried having the default be that it is disabled
and then 
reenabling it in ata.conf for the c1d0 c1d1 devices ?


-- 
Darren J Moffat
_______________________________________________
appliances-discuss mailing list
appliances-discussopensolaris.org
http://mail.opensolaris.org/mailman/listinfo/appl
iances-discuss

Re: disk specific ATA DMA
country flaguser name
Netherlands
2008-01-14 17:36:58
On Jan 14, 2008, at 11:41 AM, Darren J Moffat wrote:

> Joost Mulders wrote:
>> Hi,
>> I am building a low power "home" server
using a  EPIA mini ITX   
>> system.  Solaris is installed on a CF card and the
data is on a 2  
>> disk  zpool. The CF card is connected to IDE0 and
the zpool disks  
>> are  connected to IDE1.
>> In order to install Solaris on CF, I had to add
"-B ata-disk-dma-  
>> enabled=0" to the $kernel line in grub's
menu.lst.
>> As a result of this, ATA DMA is disabled for *all*
disks which  
>> makes  the zpool slow. I am looking for ways to
enable ATA DMA for  
>> the disks  in the zpool whilst disabling it for the
CF card.
>> The CF card is
>> c0d0 /devices/pci0,0/pci-ide11,1/ide0/cmdk0,0
>> The zpool is
>> c1d0 /devices/pci0,0/pci-ide11,1/ide1/cmdk0,0
>> c1d1 /devices/pci0,0/pci-ide11,1/ide1/cmdk1,0
>> I tried adding
>> name="ata" parent="/pci0,0/pci-ide" instance=0
ata-options="0";
>> to /kernel/drv/ata.conf but that did not work (DMA
remained enabled  
>> on  the CF card).
>> So, I am looking for a way to disable ATA DMA for a
specific disk  
>> and  to have it enabled for other disks. Anyone
knows? (nvx80)
>
> I haven't tried this but instead of trying to disable
it for the CF  
> card  have you tried having the default be that it is
disabled and  
> then reenabling it in ata.conf for the c1d0 c1d1
devices

That is precisely the point: I can't enable DMA for just
c1d0 and  
c1d1. The only option there currently is, is to
enable/disable DMA for  
a *class* of devices by use of the
ata-<class>-dma-enabled property.

I've made a *quick* change in ata so that I am able to
enable/disable  
it on a per instance (=controller) basis. Works for me ....
My ata.conf now reads
ata0-options=0;
ata1-options=1;
ata-options=1;

I think ata-options was inspired by scsi-options. However,
the parent  
driver of a scsi device provides target, lun, class
properties which  
can be used to "select" a particular device for
applying scsi-options.  
The parent of ata (pci-ide, ...) lack these.

Joost

*** ata_common.c.orig   Mon Jan 14 23:40:41 2008
--- ata_common.c        Mon Jan 14 23:34:54 2008
***************
*** 2175,2180 ****
--- 2175,2181 ----
        boolean_t disk_dma;
        boolean_t atapi_dma;
        int ata_options;
+       char propname[32];

        ata_dev_DMA_sel_msg = NULL;

***************
*** 2185,2192 ****
                return (ATA_DMA_OFF);
        }

!       ata_options = ddi_prop_get_int(DDI_DEV_T_ANY,
ata_ctlp->ac_dip,
!           0, "ata-options", 0);

        if (!(ata_options & ATA_OPTIONS_DMA)) {
                /*
--- 2186,2203 ----
                return (ATA_DMA_OFF);
        }

!       /*
!        * Use ata<instance>-options if it exists. Use
ata-options if  
not.
!        */
!       (void) snprintf(propname, sizeof(propname),
"ata%d-options",
!               ddi_get_instance(ata_ctlp->ac_dip));
!       if (ddi_prop_exists(DDI_DEV_T_ANY,
ata_ctlp->ac_dip, 0,
!                       propname) == 1) {
!               ata_options =
ddi_prop_get_int(DDI_DEV_T_ANY, ata_ctlp- 
 >ac_dip,
!                   0, propname, 0);
!       } else
!               ata_options =
ddi_prop_get_int(DDI_DEV_T_ANY, ata_ctlp- 
 >ac_dip,
!                   0, "ata-options", 0);

        if (!(ata_options & ATA_OPTIONS_DMA)) {
                /*



>
>
> -- 
> Darren J Moffat

_______________________________________________
appliances-discuss mailing list
appliances-discussopensolaris.org
http://mail.opensolaris.org/mailman/listinfo/appl
iances-discuss

[1-4]

about | contact  Other archives ( Real Estate discussion Medical topics )