|
List Info
Thread: disk specific ATA DMA
|
|
| disk specific ATA DMA |
  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/pci 0,0/pci-ide 11,1/ide 0/cmdk 0,0
The zpool is
c1d0 /devices/pci 0,0/pci-ide 11,1/ide 1/cmdk 0,0
c1d1 /devices/pci 0,0/pci-ide 11,1/ide 1/cmdk 1,0
I tried adding
name="ata" parent="/pci 0,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-discuss opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/appl
iances-discuss
|
|
| Re: disk specific ATA DMA |
  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/pci 0,0/pci-ide 11,1/ide 0/cmdk 0,0
>
> The zpool is
> c1d0 /devices/pci 0,0/pci-ide 11,1/ide 1/cmdk 0,0
> c1d1 /devices/pci 0,0/pci-ide 11,1/ide 1/cmdk 1,0
>
> I tried adding
> name="ata" parent="/pci 0,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-discuss opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/appl
iances-discuss
|
|
| Re: disk specific ATA DMA |
  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/pci 0,0/pci-ide 11,1/ide 0/cmdk 0,0
>
> The zpool is
> c1d0 /devices/pci 0,0/pci-ide 11,1/ide 1/cmdk 0,0
> c1d1 /devices/pci 0,0/pci-ide 11,1/ide 1/cmdk 1,0
>
> I tried adding
> name="ata" parent="/pci 0,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-discuss opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/appl
iances-discuss
|
|
| Re: disk specific ATA DMA |
  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/pci 0,0/pci-ide 11,1/ide 0/cmdk 0,0
>> The zpool is
>> c1d0 /devices/pci 0,0/pci-ide 11,1/ide 1/cmdk 0,0
>> c1d1 /devices/pci 0,0/pci-ide 11,1/ide 1/cmdk 1,0
>> I tried adding
>> name="ata" parent="/pci 0,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-discuss opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/appl
iances-discuss
|
|
[1-4]
|
|