From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 16:16:33 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D0E12106566B; Sun, 23 May 2010 16:16:33 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BCA3F8FC16; Sun, 23 May 2010 16:16:33 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4NGGX0k026047; Sun, 23 May 2010 16:16:33 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NGGXvc026040; Sun, 23 May 2010 16:16:33 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201005231616.o4NGGXvc026040@svn.freebsd.org> From: Marius Strobl Date: Sun, 23 May 2010 16:16:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208451 - in stable/8/sys: cam/ata conf dev/ata pc98/include pc98/pc98 sparc64/include sparc64/sparc64 X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 16:16:33 -0000 Author: marius Date: Sun May 23 16:16:33 2010 New Revision: 208451 URL: http://svn.freebsd.org/changeset/base/208451 Log: MFC: r208349 Change ad_firmware_geom_adjust() to operate on a struct disk * only and hook it up to ada(4) also. While at it, rename *ad_firmware_geom_adjust() to *ata_disk_firmware_geom_adjust() etc now that these are no longer limited to ad(4). This also allows to maintain a compatibility shim for pc98_ad_firmware_geom_adjust() for the tier-1 PC98 in stable/8. Reviewed by: mav (r208349) Modified: stable/8/sys/cam/ata/ata_da.c stable/8/sys/conf/files.sparc64 stable/8/sys/dev/ata/ata-disk.c stable/8/sys/pc98/include/md_var.h stable/8/sys/pc98/pc98/pc98_machdep.c stable/8/sys/sparc64/include/md_var.h stable/8/sys/sparc64/sparc64/ata_machdep.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/cam/ata/ata_da.c ============================================================================== --- stable/8/sys/cam/ata/ata_da.c Sun May 23 15:30:32 2010 (r208450) +++ stable/8/sys/cam/ata/ata_da.c Sun May 23 16:16:33 2010 (r208451) @@ -58,6 +58,8 @@ __FBSDID("$FreeBSD$"); #include +#include /* geometry translation */ + #ifdef _KERNEL #define ATA_MAX_28BIT_LBA 268435455UL @@ -178,6 +180,13 @@ static void adashutdown(void *arg, int #define ADA_DEFAULT_SEND_ORDERED 1 #endif +/* + * Most platforms map firmware geometry to actual, but some don't. If + * not overridden, default to nothing. + */ +#ifndef ata_disk_firmware_geom_adjust +#define ata_disk_firmware_geom_adjust(disk) +#endif static int ada_retry_count = ADA_DEFAULT_RETRY; static int ada_default_timeout = ADA_DEFAULT_TIMEOUT; @@ -737,9 +746,9 @@ adaregister(struct cam_periph *periph, v ata_logical_sector_offset(&cgd->ident_data)) % softc->disk->d_stripesize; } - /* XXX: these are not actually "firmware" values, so they may be wrong */ softc->disk->d_fwsectors = softc->params.secs_per_track; softc->disk->d_fwheads = softc->params.heads; + ata_disk_firmware_geom_adjust(softc->disk); disk_create(softc->disk, DISK_VERSION); mtx_lock(periph->sim->mtx); Modified: stable/8/sys/conf/files.sparc64 ============================================================================== --- stable/8/sys/conf/files.sparc64 Sun May 23 15:30:32 2010 (r208450) +++ stable/8/sys/conf/files.sparc64 Sun May 23 16:16:33 2010 (r208451) @@ -84,7 +84,7 @@ sparc64/pci/schizo.c optional pci sparc64/sbus/dma_sbus.c optional sbus sparc64/sbus/sbus.c optional sbus sparc64/sbus/lsi64854.c optional sbus -sparc64/sparc64/ata_machdep.c optional atadisk +sparc64/sparc64/ata_machdep.c optional ada | atadisk | da sparc64/sparc64/autoconf.c standard sparc64/sparc64/bus_machdep.c standard sparc64/sparc64/cache.c standard Modified: stable/8/sys/dev/ata/ata-disk.c ============================================================================== --- stable/8/sys/dev/ata/ata-disk.c Sun May 23 15:30:32 2010 (r208450) +++ stable/8/sys/dev/ata/ata-disk.c Sun May 23 16:16:33 2010 (r208451) @@ -67,8 +67,8 @@ static dumper_t ad_dump; * Most platforms map firmware geom to actual, but some don't. If * not overridden, default to nothing. */ -#ifndef ad_firmware_geom_adjust -#define ad_firmware_geom_adjust(dev, disk) +#ifndef ata_disk_firmware_geom_adjust +#define ata_disk_firmware_geom_adjust(disk) #endif /* local vars */ @@ -142,9 +142,9 @@ ad_attach(device_t dev) adp->disk->d_flags |= DISKFLAG_CANDELETE; strlcpy(adp->disk->d_ident, atadev->param.serial, sizeof(adp->disk->d_ident)); + ata_disk_firmware_geom_adjust(adp->disk); disk_create(adp->disk, DISK_VERSION); device_add_child(dev, "subdisk", device_get_unit(dev)); - ad_firmware_geom_adjust(dev, adp->disk); bus_generic_attach(dev); callout_init(&atadev->spindown_timer, 1); Modified: stable/8/sys/pc98/include/md_var.h ============================================================================== --- stable/8/sys/pc98/include/md_var.h Sun May 23 15:30:32 2010 (r208450) +++ stable/8/sys/pc98/include/md_var.h Sun May 23 16:16:33 2010 (r208451) @@ -41,13 +41,14 @@ extern int need_post_dma_flush; /* * The ad driver maps the IDE disk's actual geometry to the firmware's * notion of geometry. However, PC98 machines need to do something - * different sometimes, so override the hook so we can do so. We have to - * have a knowledge that a device_t is a struct device * here to avoid - * including too many things from this file. + * different sometimes, so override the hook so we can do so. */ struct disk; +void pc98_ata_disk_firmware_geom_adjust(struct disk *); +#define ata_disk_firmware_geom_adjust(disk) \ + pc98_ata_disk_firmware_geom_adjust(disk) +/* backwards compatibility shim */ struct device; void pc98_ad_firmware_geom_adjust(struct device *, struct disk *); -#define ad_firmware_geom_adjust(dev, dsk) pc98_ad_firmware_geom_adjust(dev, dsk) #endif /* !_PC98_INCLUDE_MD_VAR_H_ */ Modified: stable/8/sys/pc98/pc98/pc98_machdep.c ============================================================================== --- stable/8/sys/pc98/pc98/pc98_machdep.c Sun May 23 15:30:32 2010 (r208450) +++ stable/8/sys/pc98/pc98/pc98_machdep.c Sun May 23 16:16:33 2010 (r208451) @@ -211,7 +211,7 @@ scsi_da_bios_params(struct ccb_calc_geom /* IDE BIOS compatible mode. */ static void -pc98_ad_geom_adjust_idebios(struct disk *disk) +pc98_ata_disk_geom_adjust_idebios(struct disk *disk) { if (disk->d_mediasize < MEDIASIZE_4_3G) { @@ -236,7 +236,7 @@ pc98_ad_geom_adjust_idebios(struct disk /* SCSI BIOS compatible mode. */ static void -pc98_ad_geom_adjust_scsibios(struct disk *disk) +pc98_ata_disk_geom_adjust_scsibios(struct disk *disk) { if (disk->d_mediasize < MEDIASIZE_8G) { @@ -261,13 +261,13 @@ pc98_ad_geom_adjust_scsibios(struct disk /* Compatible with the revision 1.28. */ static void -pc98_ad_geom_adjust_cyl16bit(struct disk *disk) +pc98_ata_disk_geom_adjust_cyl16bit(struct disk *disk) { off_t totsec = disk->d_mediasize / disk->d_sectorsize; off_t cyl = totsec / disk->d_fwsectors / disk->d_fwheads; - + /* - * It is impossible to have more than 65535 cylendars, so if + * It is impossible to have more than 65535 cylinders, so if * we have more then try to adjust. This is lame, but it is * only POC. */ @@ -289,7 +289,7 @@ pc98_ad_geom_adjust_cyl16bit(struct disk } void -pc98_ad_firmware_geom_adjust(device_t dev, struct disk *disk) +pc98_ata_disk_firmware_geom_adjust(struct disk *disk) { u_int oldsectors, oldheads; @@ -298,13 +298,13 @@ pc98_ad_firmware_geom_adjust(device_t de switch (ad_geom_method) { case AD_GEOM_ADJUST_COMPATIDE: - pc98_ad_geom_adjust_idebios(disk); + pc98_ata_disk_geom_adjust_idebios(disk); break; case AD_GEOM_ADJUST_COMPATSCSI: - pc98_ad_geom_adjust_scsibios(disk); + pc98_ata_disk_geom_adjust_scsibios(disk); break; case AD_GEOM_ADJUST_COMPATCYL16: - pc98_ad_geom_adjust_cyl16bit(disk); + pc98_ata_disk_geom_adjust_cyl16bit(disk); break; default: /* Do nothing. */ @@ -313,9 +313,16 @@ pc98_ad_firmware_geom_adjust(device_t de if (bootverbose && (oldsectors != disk->d_fwsectors || oldheads != disk->d_fwheads)) - device_printf(dev, - "geometry adjusted from [%dH/%dS] to [%dH/%dS]\n", + printf( + "%s%d: geometry adjusted from [%dH/%dS] to [%dH/%dS]\n", + disk->d_name, disk->d_unit, oldheads, oldsectors, disk->d_fwheads, disk->d_fwsectors); +} + +void +pc98_ad_firmware_geom_adjust(device_t dev __unused, struct disk *disk) +{ + pc98_ata_disk_firmware_geom_adjust(disk); } Modified: stable/8/sys/sparc64/include/md_var.h ============================================================================== --- stable/8/sys/sparc64/include/md_var.h Sun May 23 15:30:32 2010 (r208450) +++ stable/8/sys/sparc64/include/md_var.h Sun May 23 16:16:33 2010 (r208451) @@ -66,13 +66,10 @@ extern cpu_block_zero_t *cpu_block_zero; * Given that the Sun disk label only uses 16-bit fields for cylinders, * heads and sectors we might need to adjust the geometry of large IDE * disks. - * We have to have a knowledge that a device_t is a struct device * here - * to avoid including too many things from this file. */ struct disk; -struct device; -void sparc64_ad_firmware_geom_adjust(struct device *dev, struct disk *disk); -#define ad_firmware_geom_adjust(dev, dsk) \ - sparc64_ad_firmware_geom_adjust(dev, dsk) +void sparc64_ata_disk_firmware_geom_adjust(struct disk *disk); +#define ata_disk_firmware_geom_adjust(disk) \ + sparc64_ata_disk_firmware_geom_adjust(disk) #endif /* !_MACHINE_MD_VAR_H_ */ Modified: stable/8/sys/sparc64/sparc64/ata_machdep.c ============================================================================== --- stable/8/sys/sparc64/sparc64/ata_machdep.c Sun May 23 15:30:32 2010 (r208450) +++ stable/8/sys/sparc64/sparc64/ata_machdep.c Sun May 23 16:16:33 2010 (r208451) @@ -32,7 +32,7 @@ __FBSDID("$FreeBSD$"); #include void -sparc64_ad_firmware_geom_adjust(device_t dev, struct disk *disk) +sparc64_ata_disk_firmware_geom_adjust(struct disk *disk) { /*