Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 18 May 2009 01:51:19 +0300
From:      Alexander Motin <mav@FreeBSD.org>
To:        John Baldwin <jhb@freebsd.org>
Cc:        Bruce Simpson <bms@incunabulum.net>, freebsd-stable@freebsd.org
Subject:   Re: Boot panic w/7.2-STABLE on amd64: resource_list_alloc
Message-ID:  <4A1094E7.9010502@FreeBSD.org>
In-Reply-To: <1242404600.00112531.1242393604@10.7.7.3>
References:  <1242375781.00112347.1242364801@10.7.7.3> <1242404600.00112531.1242393604@10.7.7.3>

next in thread | previous in thread | raw e-mail | index | archive | help
John Baldwin wrote:
> Sounds like the ATA driver is allocating the same BAR twice.  Hmm, yes, it 
> allocates the resources once for each channel it seems in the ata_ali_sata 
> attachment.  Looking in ata-chipset.c, all the other chipsets are good about 
> allocating these resources in their chipinit routines rather than the 
> per-channel allocate routine.  Well, except ata_pci_allocate() is also 
> busted.  *sigh*  I can work on a patch for HEAD if you are willing to test.

ata_pci_allocate() (now known as ata_pci_ch_attach()) is a different 
case. It uses allocation functions wrapped by the atapci "bus", so every 
channel uses it's own pair of RIDs.

Problem of ALI SATA is a bit different. As I understand, controller has 
two pairs of RIDs for 4 channels, so each channel should share resources 
with another one, just using different offset. Is there any other way to 
correctly handle two halves of same resource separately without teaching 
atapci to virtualize this as interrupts or handle it on controller level?

-- 
Alexander Motin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4A1094E7.9010502>